efi/x86: Only copy upto the end of setup_header
authorArvind Sankar <nivedita@alum.mit.edu>
Thu, 18 Jun 2020 20:43:15 +0000 (16:43 -0400)
committerArd Biesheuvel <ardb@kernel.org>
Thu, 25 Jun 2020 16:09:48 +0000 (18:09 +0200)
commit59476f80d8781a84e25f0cbcf378ccab1ad7abf8
treeb8efaa7bc6afbddfa22215fc22da216b0f6bf320
parent0bda49f30ca48998102eb0a0b53970c3a3558be0
efi/x86: Only copy upto the end of setup_header

When copying the setup_header into the boot_params buffer, only the data
that is actually part of the setup_header should be copied.

efi_pe_entry() currently copies the entire second sector, which
initializes some of the fields in boot_params beyond the setup_header
with garbage (i.e. part of the real-mode boot code gets copied into
those fields).

This does not cause any issues currently because the fields that are
overwritten are padding, BIOS EDD information that won't get used, and
the E820 table which will get properly filled in later.

Fix this to only copy data that is actually part of the setup_header
structure.

Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/libstub/x86-stub.c