2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-06 20:53:54 +08:00
linux-next/arch/x86/boot/compressed
Matt Fleming b1994304fc x86, efi: Add dedicated EFI stub entry point
The method used to work out whether we were booted by EFI firmware or
via a boot loader is broken. Because efi_main() is always executed
when booting from a boot loader we will dereference invalid pointers
either on the stack (CONFIG_X86_32) or contained in %rdx
(CONFIG_X86_64) when searching for an EFI System Table signature.

Instead of dereferencing these invalid system table pointers, add a
new entry point that is only used when booting from EFI firmware, when
we know the pointer arguments will be valid. With this change legacy
boot loaders will no longer execute efi_main(), but will instead skip
EFI stub initialisation completely.

[ hpa: Marking this for urgent/stable since it is a regression when
  the option is enabled; without the option the patch has no effect ]

Signed-off-by: Matt Fleming <matt.hfleming@intel.com>
Link: http://lkml.kernel.org/r/1334584744.26997.14.camel@mfleming-mobl1.ger.corp.intel.com
Reported-by: Jordan Justen <jordan.l.justen@intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: <stable@vger.kernel.org> v3.3
2012-04-16 11:41:44 -07:00
..
.gitignore x86, boot: add new generated files to the appropriate .gitignore files 2009-06-02 21:13:30 -07:00
cmdline.c x86, setup: enable early console output from the decompressor 2010-08-02 20:32:20 -07:00
early_serial_console.c x86, setup: enable early console output from the decompressor 2010-08-02 20:32:20 -07:00
eboot.c x86, efi: Fix pointer math issue in handle_ramdisks() 2012-03-16 13:03:24 -07:00
eboot.h x86, efi: Break up large initrd reads 2011-12-16 08:34:35 -08:00
efi_stub_32.S x86, efi: EFI boot stub support 2011-12-12 14:26:10 -08:00
efi_stub_64.S x86, efi: EFI boot stub support 2011-12-12 14:26:10 -08:00
head_32.S x86, efi: Add dedicated EFI stub entry point 2012-04-16 11:41:44 -07:00
head_64.S x86, efi: Add dedicated EFI stub entry point 2012-04-16 11:41:44 -07:00
Makefile x86, mkpiggy: Don't open code put_unaligned_le32() 2012-02-28 10:22:57 -08:00
misc.c x86/boot-image: Don't leak phdrs in arch/x86/boot/compressed/misc.c::Parse_elf() 2012-01-26 11:30:29 +01:00
misc.h x86, setup: move isdigit.h to ctype.h, header files on top. 2010-08-02 21:07:20 -07:00
mkpiggy.c x86, mkpiggy: Don't open code put_unaligned_le32() 2012-02-28 10:22:57 -08:00
relocs.c x86, relocs: Don't open code put_unaligned_le32() 2012-02-28 10:22:55 -08:00
string.c x86, efi: EFI boot stub support 2011-12-12 14:26:10 -08:00
vmlinux.lds.S x86, setup: Allow global variables and functions in the decompressor 2010-08-02 15:34:44 -07:00