[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 11/14] x86/alt: Adjust _alternative_instructions() to not create shadow stacks
On 29/05/2020 13:23, Jan Beulich wrote: > On 27.05.2020 21:18, Andrew Cooper wrote: >> @@ -398,6 +399,19 @@ static void __init _alternative_instructions(bool force) >> panic("Timed out waiting for alternatives self-NMI to hit\n"); >> >> set_nmi_callback(saved_nmi_callback); >> + >> + /* >> + * When Xen is using shadow stacks, the alternatives clearing CR0.WP and >> + * writing into the mappings set dirty bits, turning the mappings into >> + * shadow stack mappings. >> + * >> + * While we can execute from them, this would also permit them to be the >> + * target of WRSS instructions, so reset the dirty after patching. >> + */ >> + if ( cpu_has_xen_shstk ) >> + modify_xen_mappings(XEN_VIRT_START + MB(2), >> + (unsigned long)&__2M_text_end, >> + PAGE_HYPERVISOR_RX); > Am I misremembering, or did you post a patch before that should > be part of this series, as being a prereq to this change, > making modify_xen_mappings() also respect _PAGE_DIRTY as > requested by the caller? No. Its the hunk you deleted from lower in this patch. > Additionally I notice this > > if ( desc->Attribute & (efi_bs_revision < EFI_REVISION(2, 5) > ? EFI_MEMORY_WP : EFI_MEMORY_RO) ) > prot &= ~_PAGE_RW; > > in efi_init_memory(). Afaict we will need to clear _PAGE_DIRTY > there as well, with prot starting out as PAGE_HYPERVISOR_RWX. Ok. I'll pull that out into a separate patch. ~Andrew
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |