linux_dsm_epyc7002/arch/x86/platform/efi
Ard Biesheuvel 3cc028619e efi/x86: avoid KASAN false positives when accessing the 1: 1 mapping
When installing the EFI virtual address map during early boot, we
access the EFI system table to retrieve the 1:1 mapped address of
the SetVirtualAddressMap() EFI runtime service. This memory is not
known to KASAN, so on KASAN enabled builds, this may result in a
splat like

  ==================================================================
  BUG: KASAN: user-memory-access in efi_set_virtual_address_map+0x141/0x354
  Read of size 4 at addr 000000003fbeef38 by task swapper/0/0

  CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.5.0-rc5+ #758
  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
  Call Trace:
   dump_stack+0x8b/0xbb
   ? efi_set_virtual_address_map+0x141/0x354
   ? efi_set_virtual_address_map+0x141/0x354
   __kasan_report+0x176/0x192
   ? efi_set_virtual_address_map+0x141/0x354
   kasan_report+0xe/0x20
   efi_set_virtual_address_map+0x141/0x354
   ? efi_thunk_runtime_setup+0x148/0x148
   ? __inc_numa_state+0x19/0x90
   ? memcpy+0x34/0x50
   efi_enter_virtual_mode+0x5fd/0x67d
   start_kernel+0x5cd/0x682
   ? mem_encrypt_init+0x6/0x6
   ? x86_family+0x5/0x20
   ? load_ucode_bsp+0x46/0x154
   secondary_startup_64+0xa4/0xb0
  ==================================================================

Since this code runs only a single time during early boot, let's annotate
it as __no_sanitize_address so KASAN disregards it entirely.

Fixes: 6982947045 ("efi/x86: Split SetVirtualAddresMap() wrappers into ...")
Reported-by: Qian Cai <cai@lca.pw>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2020-01-20 08:14:29 +01:00
..
efi_32.c efi/x86: Simplify i386 efi_call_phys() firmware call wrapper 2020-01-10 18:55:02 +01:00
efi_64.c efi/x86: avoid KASAN false positives when accessing the 1: 1 mapping 2020-01-20 08:14:29 +01:00
efi_stub_32.S efi/x86: Simplify i386 efi_call_phys() firmware call wrapper 2020-01-10 18:55:02 +01:00
efi_stub_64.S efi/x86: Check number of arguments to variadic functions 2020-01-10 18:55:04 +01:00
efi_thunk_64.S efi/x86: Check number of arguments to variadic functions 2020-01-10 18:55:04 +01:00
efi.c efi: Add tracking for dynamically allocated memmaps 2020-01-20 08:14:29 +01:00
Makefile efi/x86: Simplify 64-bit EFI firmware call wrapper 2020-01-10 18:55:02 +01:00
quirks.c efi: Add tracking for dynamically allocated memmaps 2020-01-20 08:14:29 +01:00