All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/3] kasan: Fix metadata detection for KASAN_HW_TAGS
@ 2021-01-22 15:56 ` Vincenzo Frascino
  0 siblings, 0 replies; 30+ messages in thread
From: Vincenzo Frascino @ 2021-01-22 15:56 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel, kasan-dev
  Cc: Vincenzo Frascino, Andrey Ryabinin, Alexander Potapenko,
	Dmitry Vyukov, Leon Romanovsky, Andrey Konovalov,
	Catalin Marinas, Will Deacon, Mark Rutland, Paul E . McKenney,
	Naresh Kamboju

With the introduction of KASAN_HW_TAGS, kasan_report() currently assumes
that every location in memory has valid metadata associated. This is due
to the fact that addr_has_metadata() returns always true.

As a consequence of this, an invalid address (e.g. NULL pointer address)
passed to kasan_report() when KASAN_HW_TAGS is enabled, leads to a
kernel panic.

Example below, based on arm64:

 ==================================================================
 BUG: KASAN: invalid-access in 0x0
 Read at addr 0000000000000000 by task swapper/0/1
 Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
 Mem abort info:
   ESR = 0x96000004
   EC = 0x25: DABT (current EL), IL = 32 bits
   SET = 0, FnV = 0
   EA = 0, S1PTW = 0
 Data abort info:
   ISV = 0, ISS = 0x00000004
   CM = 0, WnR = 0

...

 Call trace:
  mte_get_mem_tag+0x24/0x40
  kasan_report+0x1a4/0x410
  alsa_sound_last_init+0x8c/0xa4
  do_one_initcall+0x50/0x1b0
  kernel_init_freeable+0x1d4/0x23c
  kernel_init+0x14/0x118
  ret_from_fork+0x10/0x34
 Code: d65f03c0 9000f021 f9428021 b6cfff61 (d9600000)
 ---[ end trace 377c8bb45bdd3a1a ]---
 hrtimer: interrupt took 48694256 ns
 note: swapper/0[1] exited with preempt_count 1
 Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
 SMP: stopping secondary CPUs
 Kernel Offset: 0x35abaf140000 from 0xffff800010000000
 PHYS_OFFSET: 0x40000000
 CPU features: 0x0a7e0152,61c0a030
 Memory Limit: none
 ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---

This series fixes the behavior of addr_has_metadata() that now returns
true only when the address is valid.

Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Leon Romanovsky <leonro@mellanox.com>
Cc: Andrey Konovalov <andreyknvl@google.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Paul E. McKenney <paulmck@kernel.org>
Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>

Vincenzo Frascino (3):
  arm64: Improve kernel address detection of __is_lm_address()
  kasan: Add explicit preconditions to kasan_report()
  kasan: Make addr_has_metadata() return true for valid addresses

 arch/arm64/include/asm/memory.h | 6 ++++--
 include/linux/kasan.h           | 7 +++++++
 mm/kasan/kasan.h                | 2 +-
 3 files changed, 12 insertions(+), 3 deletions(-)

-- 
2.30.0


^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2021-01-26 12:11 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-22 15:56 [PATCH v4 0/3] kasan: Fix metadata detection for KASAN_HW_TAGS Vincenzo Frascino
2021-01-22 15:56 ` Vincenzo Frascino
2021-01-22 15:56 ` [PATCH v4 1/3] arm64: Improve kernel address detection of __is_lm_address() Vincenzo Frascino
2021-01-22 15:56   ` Vincenzo Frascino
2021-01-25 13:02   ` Mark Rutland
2021-01-25 13:02     ` Mark Rutland
2021-01-25 14:36     ` Vincenzo Frascino
2021-01-25 14:36       ` Vincenzo Frascino
2021-01-25 14:59       ` Catalin Marinas
2021-01-25 14:59         ` Catalin Marinas
2021-01-25 16:09         ` Vincenzo Frascino
2021-01-25 16:09           ` Vincenzo Frascino
2021-01-25 17:56           ` Catalin Marinas
2021-01-25 17:56             ` Catalin Marinas
2021-01-26 11:58             ` Vincenzo Frascino
2021-01-26 11:58               ` Vincenzo Frascino
2021-01-26 12:07               ` Catalin Marinas
2021-01-26 12:07                 ` Catalin Marinas
2021-01-26 12:13                 ` Vincenzo Frascino
2021-01-26 12:13                   ` Vincenzo Frascino
2021-01-25 17:38         ` Mark Rutland
2021-01-25 17:38           ` Mark Rutland
2021-01-22 15:56 ` [PATCH v4 2/3] kasan: Add explicit preconditions to kasan_report() Vincenzo Frascino
2021-01-22 15:56   ` Vincenzo Frascino
2021-01-22 16:10   ` Andrey Konovalov
2021-01-22 16:10     ` Andrey Konovalov
2021-01-22 15:56 ` [PATCH v4 3/3] kasan: Make addr_has_metadata() return true for valid addresses Vincenzo Frascino
2021-01-22 15:56   ` Vincenzo Frascino
2021-01-22 16:09   ` Andrey Konovalov
2021-01-22 16:09     ` Andrey Konovalov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.