[PATCH master 2/2] KASan: fix handling of devices with MMIO above SDRAM memory region

Ahmad Fatoum a.fatoum at pengutronix.de
Mon Dec 12 08:39:07 PST 2022


check_memory_region_inline will discard KASan reports before start of
RAM as false positives. This is sufficient for i.MX SoCs where the RAM
starts after all device MMIO regions. On the AT91, the EBI memory
controller's memory region follows the SDRAM memory region. This
results in a KASan warning the first time NAND is accessed.

Record the end of the shadowed SDRAM area to fix this.

Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 lib/kasan/generic.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/kasan/generic.c b/lib/kasan/generic.c
index b33a6c1a6c0c..1eccacf2b4b0 100644
--- a/lib/kasan/generic.c
+++ b/lib/kasan/generic.c
@@ -22,6 +22,7 @@
 
 unsigned long kasan_shadow_start;
 unsigned long kasan_shadow_base;
+unsigned long kasan_shadowed_end;
 
 /*
  * All functions below always inlined so compiler could
@@ -160,6 +161,9 @@ static __always_inline bool check_memory_region_inline(unsigned long addr,
 	if (addr < kasan_shadow_start)
 		return true;
 
+	if (addr > kasan_shadowed_end)
+		return true;
+
 	if (unlikely(size == 0))
 		return true;
 
@@ -180,6 +184,7 @@ void kasan_init(unsigned long membase, unsigned long memsize,
 {
 	kasan_shadow_start = membase;
 	kasan_shadow_base = shadow_base;
+	kasan_shadowed_end = membase + memsize - 1;
 
 	kasan_unpoison_shadow((void *)membase, memsize);
 	kasan_initialized = true;
-- 
2.30.2




More information about the barebox mailing list