[PATCH -fixes 0/4] Fixes KASAN and other along the way
Alexandre Ghiti
alexandre.ghiti at canonical.com
Fri Feb 18 05:35:09 PST 2022
As reported by Aleksandr, syzbot riscv is broken since commit
54c5639d8f50 ("riscv: Fix asan-stack clang build"). This commit actually
breaks KASAN_INLINE which is not fixed in this series, that will come later
when found.
Nevertheless, this series fixes small things that made the syzbot
configuration + KASAN_OUTLINE fail to boot.
Note that even though the config at [1] boots fine with this series, I
was not able to boot the small config at [2] which fails because
kasan_poison receives a really weird address 0x4075706301000000 (maybe a
kasan person could provide some hint about what happens below in
do_ctors -> __asan_register_globals):
Thread 2 hit Breakpoint 1, kasan_poison (addr=<optimized out>, size=<optimized out>, value=<optimized out>, init=<optimized out>) at /home/alex/work/linux/mm/kasan/shadow.c:90
90 if (WARN_ON((unsigned long)addr & KASAN_GRANULE_MASK))
1: x/i $pc
=> 0xffffffff80261712 <kasan_poison>: andi a4,a0,7
5: /x $a0 = 0x4075706301000000
Thread 2 hit Breakpoint 2, handle_exception () at /home/alex/work/linux/arch/riscv/kernel/entry.S:27
27 csrrw tp, CSR_SCRATCH, tp
1: x/i $pc
=> 0xffffffff80004098 <handle_exception>: csrrw tp,sscratch,tp
5: /x $a0 = 0xe80eae0b60200000
(gdb) bt
#0 handle_exception () at /home/alex/work/linux/arch/riscv/kernel/entry.S:27
#1 0xffffffff80261746 in kasan_poison (addr=<optimized out>, size=<optimized out>, value=<optimized out>, init=<optimized out>)
at /home/alex/work/linux/mm/kasan/shadow.c:98
#2 0xffffffff802618b4 in kasan_unpoison (addr=<optimized out>, size=<optimized out>, init=<optimized out>)
at /home/alex/work/linux/mm/kasan/shadow.c:138
#3 0xffffffff80260876 in register_global (global=<optimized out>) at /home/alex/work/linux/mm/kasan/generic.c:214
#4 __asan_register_globals (globals=<optimized out>, size=<optimized out>) at /home/alex/work/linux/mm/kasan/generic.c:226
#5 0xffffffff8125efac in _sub_I_65535_1 ()
#6 0xffffffff81201b32 in do_ctors () at /home/alex/work/linux/init/main.c:1156
#7 do_basic_setup () at /home/alex/work/linux/init/main.c:1407
#8 kernel_init_freeable () at /home/alex/work/linux/init/main.c:1613
#9 0xffffffff81153ddc in kernel_init (unused=<optimized out>) at /home/alex/work/linux/init/main.c:1502
#10 0xffffffff800041c0 in handle_exception () at /home/alex/work/linux/arch/riscv/kernel/entry.S:231
Thanks again to Aleksandr for narrowing down the issues fixed here.
[1] https://gist.github.com/a-nogikh/279c85c2d24f47efcc3e865c08844138
[2] https://gist.github.com/AlexGhiti/a5a0cab0227e2bf38f9d12232591c0e4
Alexandre Ghiti (4):
riscv: Fix is_linear_mapping with recent move of KASAN region
riscv: Fix config KASAN && SPARSEMEM && !SPARSE_VMEMMAP
riscv: Fix DEBUG_VIRTUAL false warnings
riscv: Fix config KASAN && DEBUG_VIRTUAL
arch/riscv/include/asm/page.h | 2 +-
arch/riscv/mm/Makefile | 3 +++
arch/riscv/mm/kasan_init.c | 3 +--
arch/riscv/mm/physaddr.c | 4 +---
4 files changed, 6 insertions(+), 6 deletions(-)
--
2.32.0
More information about the linux-riscv
mailing list