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@xxxxxxxxxxxxxx> --- 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