• A
    efi: Don't attempt to map RCI2 config table if it doesn't exist · a470552e
    Ard Biesheuvel 提交于
    Commit:
    
      1c5fecb6 ("efi: Export Runtime Configuration Interface table to sysfs")
    
    ... added support for a Dell specific UEFI configuration table, but
    failed to take into account that mapping the table should not be
    attempted unless the table actually exists. If it doesn't exist,
    the code usually fails silently unless pr_debug() prints are
    enabled. However, on 32-bit PAE x86, the splat below is produced due
    to the attempt to map the placeholder value EFI_INVALID_TABLE_ADDR
    which we use for non-existing UEFI configuration tables, and which
    equals ULONG_MAX.
    
       memremap attempted on mixed range 0x00000000ffffffff size: 0x1e
       WARNING: CPU: 1 PID: 1 at kernel/iomem.c:81 memremap+0x1a3/0x1c0
       Modules linked in:
       CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.4.2-smp-mine #1
       Hardware name: Hewlett-Packard HP Z400 Workstation/0B4Ch, BIOS 786G3 v03.61 03/05/2018
       EIP: memremap+0x1a3/0x1c0
      ...
       Call Trace:
        ? map_properties+0x473/0x473
        ? efi_rci2_sysfs_init+0x2c/0x154
        ? map_properties+0x473/0x473
        ? do_one_initcall+0x49/0x1d4
        ? parse_args+0x1e8/0x2a0
        ? do_early_param+0x7a/0x7a
        ? kernel_init_freeable+0x139/0x1c2
        ? rest_init+0x8e/0x8e
        ? kernel_init+0xd/0xf2
        ? ret_from_fork+0x2e/0x38
    
    Fix this by checking whether the table exists before attempting to map it.
    Reported-by: NRichard Narron <comet.berkeley@gmail.com>
    Tested-by: NRichard Narron <comet.berkeley@gmail.com>
    Signed-off-by: NArd Biesheuvel <ardb@kernel.org>
    Cc: linux-efi@vger.kernel.org
    Fixes: 1c5fecb6 ("efi: Export Runtime Configuration Interface table to sysfs")
    Link: https://lkml.kernel.org/r/20191210090945.11501-2-ardb@kernel.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
    a470552e
rci2-table.c 3.3 KB