diff options
author | Tony Jones <tonyj@suse.de> | 2014-03-26 21:54:03 -0700 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2014-03-28 09:44:40 -0700 |
commit | 3e5443fffb2c311a61fe157be25b80de53329604 (patch) | |
tree | fd94b897d29b10dd9266f63cb64cb9cb3448aa61 /kexec/arch/i386/x86-linux-setup.c | |
parent | f7ff5b3bf7dbd1aecbd72c1c4337b5fcb203f8dd (diff) |
i386: fix erroneous memory descriptor message
On non-EFI systems, efi_info section of boot_params is zero filled resulting
in an erroneous message from kexec regarding "efi memory descriptor" version.
Caused by commit: e1ffc9e9a0769e1f54185003102e9bec428b84e8 "Passing efi related
data via setup_data"
0000700 0000 0000 0000 0000 0000 0000 0000 0000
0000720 0000 0000 0000 0000 0000 0000 0000 0000
0000740
efi memory descriptor version 0 is not supported!
Signed-off-by: Tony Jones <tonyj@suse.de>
Acked-by: Dave Young <dyoung@redhat.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'kexec/arch/i386/x86-linux-setup.c')
-rw-r--r-- | kexec/arch/i386/x86-linux-setup.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/kexec/arch/i386/x86-linux-setup.c b/kexec/arch/i386/x86-linux-setup.c index aa2605f..e04e45d 100644 --- a/kexec/arch/i386/x86-linux-setup.c +++ b/kexec/arch/i386/x86-linux-setup.c @@ -687,17 +687,25 @@ static void setup_efi_info(struct kexec_info *info, ret = get_bootparam(&real_mode->efi_info, offset, 32); if (ret) return; + if (((struct efi_info *)real_mode->efi_info)->efi_memmap_size == 0) + /* zero filled efi_info */ + goto out; desc_version = get_efi_mem_desc_version(real_mode); if (desc_version != 1) { fprintf(stderr, "efi memory descriptor version %d is not supported!\n", desc_version); - memset(&real_mode->efi_info, 0, 32); - return; + goto out; } ret = setup_efi_data(info, real_mode); if (ret) - memset(&real_mode->efi_info, 0, 32); + goto out; + + return; + +out: + memset(&real_mode->efi_info, 0, 32); + return; } void setup_linux_system_parameters(struct kexec_info *info, |