Messages in this thread Patch in this message | | | From | Dave Hansen <> | Subject | [PATCH] x86/mm+efi: Avoid creating W+X mappings | Date | Thu, 22 Sep 2022 12:31:57 -0700 |
| |
From: Peter Zijlstra <peterz@infradead.org>
I'm planning on sticking this in x86/mm so that it goes upstream along with the W+X detection code.
--
A recent x86/mm change warns and refuses to create W+X mappings.
The 32-bit EFI code tries to create such a mapping and trips over the new W+X refusal.
Make the EFI_RUNTIME_SERVICES_CODE mapping read-only to fix it.
Reported-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Tested-by: Guenter Roeck <linux@roeck-us.net> Cc: Ard Biesheuvel <ardb@kernel.org> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: x86@kernel.org Cc: linux-efi@vger.kernel.org Cc: "H. Peter Anvin" <hpa@zytor.com> Link: https://lore.kernel.org/all/d8cd7c7e-24c1-7f70-24a9-91c77aa634af@roeck-us.net/ --- arch/x86/platform/efi/efi_32.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c index e06a199423c0..d81e379fcd43 100644 --- a/arch/x86/platform/efi/efi_32.c +++ b/arch/x86/platform/efi/efi_32.c @@ -136,6 +136,7 @@ void __init efi_runtime_update_mappings(void) if (md->type != EFI_RUNTIME_SERVICES_CODE) continue; + set_memory_ro(md->virt_addr, md->num_pages); set_memory_x(md->virt_addr, md->num_pages); } } -- 2.34.1
| |