efi/x86-mixed: move unmitigated RET into .rodata
authorArd Biesheuvel <ardb@kernel.org>
Fri, 22 Jul 2022 15:15:41 +0000 (17:15 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Tue, 16 Aug 2022 07:28:05 +0000 (09:28 +0200)
commit6c3a9c9ae02a16295ea144dc431aaac2c20dbffd
tree2116309d97f0a5da0a92559f2b1fe6adabf81a22
parent568035b01cfb107af8d2e4bd2fb9aea22cf5b868
efi/x86-mixed: move unmitigated RET into .rodata

Move the EFI mixed mode return trampoline RET into .rodata, so it is
normally mapped without executable permissions.  And given that this
snippet of code is really the only kernel code that we ever execute via
this 1:1 mapping, let's unmap the 1:1 mapping of the kernel .text, and
only map the page that covers the return trampoline with executable
permissions.

Note that the remainder of .rodata needs to remain mapped into the 1:1
mapping with RO/NX permissions, as literal GUIDs and strings may be
passed to the variable routines.

Acked-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
arch/x86/platform/efi/efi_64.c
arch/x86/platform/efi/efi_thunk_64.S