summaryrefslogtreecommitdiff
path: root/kexec/arch/i386/x86-linux-setup.c
diff options
context:
space:
mode:
authorTony Jones <tonyj@suse.de>2014-03-26 21:54:03 -0700
committerSimon Horman <horms@verge.net.au>2014-03-28 09:44:40 -0700
commit3e5443fffb2c311a61fe157be25b80de53329604 (patch)
treefd94b897d29b10dd9266f63cb64cb9cb3448aa61 /kexec/arch/i386/x86-linux-setup.c
parentf7ff5b3bf7dbd1aecbd72c1c4337b5fcb203f8dd (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.c14
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,