On 10/1/2020 8:22 AM, Linus Walleij wrote: > This is the 14th iteration of KASan for ARM/Aarch32. > > I have added one patch in the beginning of the series to > fix the issue when the DTB (often attached DTB) ends up > in lowmem. It also amends ARM to copy the device tree > instead of just unflattening it and using it from where > it is. > > This fixes my particular issue on the Qualcomm APQ8060 > and I hope it may also solve Florian's issue and what > Ard has been seeing. If you inspect patch 1/6 you can > see what has been going on for me. My hypothesis about > what was going on was mostly right. > > You are encouraged to test this patch set to find memory out > of bounds bugs with ARM32 platforms and drivers. > > There is a git branch you can pull in: > https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git/log/?h=kasan It does appear to be slight better, although all platforms that I have where memory starts at physical address 0 cannot boot, attached logs which are all more or less the same. The physical memory map looks like this: 0..3GB -> DRAM 3GB..4GB -> Registers, Boot ROM, Boot SRAM 4GB..12GB -> DRAM extension Do any of the platforms you use for testing have a similar memory map? Could you try to contrive a QEMU machine to have something similar in case that helps reproducing these failures? Thanks > > Abbott Liu (1): > ARM: Define the virtual space of KASan's shadow region > > Andrey Ryabinin (3): > ARM: Disable KASan instrumentation for some code > ARM: Replace string mem* functions for KASan > ARM: Enable KASan for ARM > > Linus Walleij (2): > ARM: Handle a device tree in lowmem > ARM: Initialize the mapping of KASan shadow memory > > Documentation/arm/memory.rst | 5 + > Documentation/dev-tools/kasan.rst | 4 +- > .../features/debug/KASAN/arch-support.txt | 2 +- > arch/arm/Kconfig | 10 + > arch/arm/boot/compressed/Makefile | 1 + > arch/arm/boot/compressed/string.c | 19 ++ > arch/arm/include/asm/kasan.h | 32 ++ > arch/arm/include/asm/kasan_def.h | 81 +++++ > arch/arm/include/asm/memory.h | 5 + > arch/arm/include/asm/pgalloc.h | 8 +- > arch/arm/include/asm/prom.h | 5 + > arch/arm/include/asm/string.h | 21 ++ > arch/arm/include/asm/thread_info.h | 8 + > arch/arm/include/asm/uaccess-asm.h | 2 +- > arch/arm/kernel/devtree.c | 14 +- > arch/arm/kernel/entry-armv.S | 3 +- > arch/arm/kernel/entry-common.S | 9 +- > arch/arm/kernel/head-common.S | 7 +- > arch/arm/kernel/setup.c | 10 +- > arch/arm/kernel/unwind.c | 6 +- > arch/arm/lib/memcpy.S | 3 + > arch/arm/lib/memmove.S | 5 +- > arch/arm/lib/memset.S | 3 + > arch/arm/mm/Makefile | 5 + > arch/arm/mm/kasan_init.c | 286 ++++++++++++++++++ > arch/arm/mm/mmu.c | 55 +++- > arch/arm/mm/pgd.c | 16 +- > arch/arm/vdso/Makefile | 2 + > 28 files changed, 608 insertions(+), 19 deletions(-) > create mode 100644 arch/arm/include/asm/kasan.h > create mode 100644 arch/arm/include/asm/kasan_def.h > create mode 100644 arch/arm/mm/kasan_init.c > -- Florian