summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2022-12-12 17:39:07 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2022-12-13 09:37:08 +0100
commit90b88968cf71b8b0ccb11f3baabf36801a60462c (patch)
tree81a9df1585550173d8f05de1de49ddb988ad13d6 /lib
parent337693e66d25c3ff3de6a71c853c2328c934eefd (diff)
downloadbarebox-90b88968cf71b8b0ccb11f3baabf36801a60462c.tar.gz
barebox-90b88968cf71b8b0ccb11f3baabf36801a60462c.tar.xz
KASan: fix handling of devices with MMIO above SDRAM memory region
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@pengutronix.de> Link: https://lore.barebox.org/20221212163907.2356192-2-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/kasan/generic.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/kasan/generic.c b/lib/kasan/generic.c
index b33a6c1a6c..1eccacf2b4 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;