EFI fixes
Linus,
Please pull the latest efi-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git efi-urgent-for-linus
# HEAD: c10fcb14c7afd6688c7b197a814358fecf244222 x86/sysfb_efi: Fix valid BAR address range check
This tree contains three fixes: a console spam fix, a file pattern fix and a sysfb_efi fix for a bug that triggered on older ThinkPads.
Thanks,
Ingo
------------------>
Josh Boyer (1):
x86/efi-bgrt: Switch all pr_err() to pr_notice() for invalid BGRT
Matt Fleming (1):
MAINTAINERS: Remove asterisk from EFI directory names
Wang YanQing (1):
x86/sysfb_efi: Fix valid BAR address range check
MAINTAINERS | 4 ++-- arch/x86/kernel/sysfb_efi.c | 14 ++++++++++++-- arch/x86/platform/efi/efi-bgrt.c | 18 +++++++++--------- 3 files changed, 23 insertions(+), 13 deletions(-)
MAINTAINERS +2 -2
@@ -4223,8 +4223,8 @@ F: Documentation/efi-stub.txt F: arch/ia64/kernel/efi.c F: arch/x86/boot/compressed/eboot.[ch] F: arch/x86/include/asm/efi.h -F: arch/x86/platform/efi/* -F: drivers/firmware/efi/* +F: arch/x86/platform/efi/ +F: drivers/firmware/efi/ F: include/linux/efi*.h EFI VARIABLE FILESYSTEM
arch/x86/kernel/sysfb_efi.c +12 -2
@@ -106,14 +106,24 @@ static int __init efifb_set_system(const struct dmi_system_id *id)continue ;for (i =0 ; i <DEVICE_COUNT_RESOURCE ; i++) {resource_size_t start, end; +unsigned long flags; + + flags =pci_resource_flags (dev, i); +if (!(flags &IORESOURCE_MEM )) +continue ; + +if (flags &IORESOURCE_UNSET ) +continue ; + +if (pci_resource_len (dev, i) ==0 ) +continue ; start =pci_resource_start (dev, i); -if (start ==0 ) -break ; end =pci_resource_end (dev, i);if (screen_info.lfb_base >= start && screen_info.lfb_base < end) { found_bar =1 ; +break ; } } }
arch/x86/platform/efi/efi-bgrt.c +9 -9
@@ -43,40 +43,40 @@ void __init efi_bgrt_init(void)return ;if (bgrt_tab->header.length <sizeof (*bgrt_tab)) { -pr_err ("Ignoring BGRT: invalid length %u (expected %zu)\n" , +pr_notice ("Ignoring BGRT: invalid length %u (expected %zu)\n" , bgrt_tab->header.length,sizeof (*bgrt_tab));return ; }if (bgrt_tab->version !=1 ) { -pr_err ("Ignoring BGRT: invalid version %u (expected 1)\n" , +pr_notice ("Ignoring BGRT: invalid version %u (expected 1)\n" , bgrt_tab->version);return ; }if (bgrt_tab->status &0xfe ) { -pr_err ("Ignoring BGRT: reserved status bits are non-zero %u\n" , +pr_notice ("Ignoring BGRT: reserved status bits are non-zero %u\n" , bgrt_tab->status);return ; }if (bgrt_tab->image_type !=0 ) { -pr_err ("Ignoring BGRT: invalid image type %u (expected 0)\n" , +pr_notice ("Ignoring BGRT: invalid image type %u (expected 0)\n" , bgrt_tab->image_type);return ; }if (!bgrt_tab->image_address) { -pr_err ("Ignoring BGRT: null image address\n" ); +pr_notice ("Ignoring BGRT: null image address\n" );return ; } image =memremap (bgrt_tab->image_address,sizeof (bmp_header),MEMREMAP_WB );if (!image) { -pr_err ("Ignoring BGRT: failed to map image header memory\n" ); +pr_notice ("Ignoring BGRT: failed to map image header memory\n" );return ; }memcpy (&bmp_header, image,sizeof (bmp_header));memunmap (image);if (bmp_header.id !=0x4d42 ) { -pr_err ("Ignoring BGRT: Incorrect BMP magic number 0x%x (expected 0x4d42)\n" , +pr_notice ("Ignoring BGRT: Incorrect BMP magic number 0x%x (expected 0x4d42)\n" , bmp_header.id);return ; }
@@ -84,14 +84,14 @@ void __init efi_bgrt_init(void) bgrt_image =kmalloc (bgrt_image_size,GFP_KERNEL | __GFP_NOWARN);if (!bgrt_image) { -pr_err ("Ignoring BGRT: failed to allocate memory for image (wanted %zu bytes)\n" , +pr_notice ("Ignoring BGRT: failed to allocate memory for image (wanted %zu bytes)\n" , bgrt_image_size);return ; } image =memremap (bgrt_tab->image_address, bmp_header.size,MEMREMAP_WB );if (!image) { -pr_err ("Ignoring BGRT: failed to map image memory\n" ); +pr_notice ("Ignoring BGRT: failed to map image memory\n" );kfree (bgrt_image); bgrt_image =NULL ;return ;