Messages in this thread | | | Date | Wed, 27 Apr 2011 12:39:35 +0100 | From | Matt Fleming <> | Subject | Re: [PATCH] x86, efi: Only print warning when desc_size is smaller than defined one. |
| |
On Tue, 26 Apr 2011 15:42:24 -0700 Yinghai Lu <yinghai@kernel.org> wrote:
> > One system get warning: > Kernel-defined memdesc doesn't match the one from EFI! > > UEFI spec allows GetMemoryMap() return bigger desc_size and desc_ver for future > extension. > And desc_size is already used to get offset of next memory entry. > > Only need to check if desc_size is smaller than defined struct. > > Also print the size in warning if it happens. > > Signed-off-by: Yinghai Lu <yinghai@kernel.org> > > --- > arch/x86/platform/efi/efi.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > Index: linux-2.6/arch/x86/platform/efi/efi.c > =================================================================== > --- linux-2.6.orig/arch/x86/platform/efi/efi.c > +++ linux-2.6/arch/x86/platform/efi/efi.c > @@ -448,9 +448,10 @@ void __init efi_init(void) > printk(KERN_ERR "Could not map the EFI memory map!\n"); > memmap.map_end = memmap.map + (memmap.nr_map * memmap.desc_size); > > - if (memmap.desc_size != sizeof(efi_memory_desc_t)) > + if (memmap.desc_size < sizeof(efi_memory_desc_t)) > printk(KERN_WARNING > - "Kernel-defined memdesc doesn't match the one from EFI!\n"); > + "Kernel-defined memdesc size is bigger than the one from EFI! %ld > %ld\n", > + sizeof(efi_memory_desc_t), memmap.desc_size);
Does it make sense for this to just be a warning? If sizeof(efi_memory_desec_t) > sizeof(memmap.desc_size) aren't we going to run into some pretty serious problems when we start accessing memory descriptors?
Would it not make more sense for this to be a BUG_ON()? In the unlikely event that the kernel's efi_memory_desc_t is too large I really don't see how we can recover from that.
-- Matt Fleming, Intel Open Source Technology Center
| |