• Borislav Petkov's avatar
    x86/boot: Correct RSDP parsing with 32-bit EFI · f9d230e8
    Borislav Petkov authored
    Guenter Roeck reported triple faults of a 64-bit VM using a 32-bit OVMF
    EFI image. After some singlestepping of the image in gdb, it turned out
    that some of the EFI config tables were at bogus addresses. Which, as
    Ard pointed out, results from using the wrong efi_config_table typedef.
    
    So switch all EFI table pointers to unsigned longs and convert them to
    the proper typedef only when accessing them. This way, the proper table
    type is being used.
    
    Shorten variable names, while at it.
    
    Fixes: 33f0df8d ("x86/boot: Search for RSDP in the EFI tables")
    Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Tested-by: default avatarChao Fan <fanc.fnst@cn.fujitsu.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: bhe@redhat.com
    Cc: caoj.fnst@cn.fujitsu.com
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: indou.takao@jp.fujitsu.com
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: kasong@redhat.com
    Cc: Kees Cook <keescook@chromium.org>
    Cc: msys.mizuma@gmail.com
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190208190248.GA10854@roeck-us.net
    f9d230e8
acpi.c 8.01 KB