x86, efi: initial the local variable of DataSize to zero
authorLee, Chun-Yi <joeyli.kernel@gmail.com>
Thu, 2 May 2013 14:07:01 +0000 (22:07 +0800)
committerMatt Fleming <matt.fleming@intel.com>
Tue, 14 May 2013 07:13:05 +0000 (08:13 +0100)
That will be better initial the value of DataSize to zero for the input of
GetVariable(), otherwise we will feed a random value. The debug log of input
DataSize like this:

...
[  195.915612] EFI Variables Facility v0.08 2004-May-17
[  195.915819] efi: size: 18446744071581821342
[  195.915969] efi:  size': 18446744071581821342
[  195.916324] efi: size: 18446612150714306560
[  195.916632] efi:  size': 18446612150714306560
[  195.917159] efi: size: 18446612150714306560
[  195.917453] efi:  size': 18446612150714306560
...

The size' is value that was returned by BIOS.

After applied this patch:
[   82.442042] EFI Variables Facility v0.08 2004-May-17
[   82.442202] efi: size: 0
[   82.442360] efi:  size': 1039
[   82.443828] efi: size: 0
[   82.444127] efi:  size': 2616
[   82.447057] efi: size: 0
[   82.447356] efi:  size': 5832
...

Found on Acer Aspire V3 BIOS, it will not return the size of data if we input a
non-zero DataSize.

Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
arch/x86/platform/efi/efi.c

index 55856b2310d37d76240a2af47140f2deb97e8482..82089d8b1954b562087c65b0a187b5cdf441748f 100644 (file)
@@ -206,7 +206,7 @@ static efi_status_t virt_efi_get_next_variable(unsigned long *name_size,
        }
 
        if (boot_used_size && !finished) {
-               unsigned long size;
+               unsigned long size = 0;
                u32 attr;
                efi_status_t s;
                void *tmp;