Messages in this thread | | | From | Aleksandr Nogikh <> | Date | Tue, 22 Feb 2022 11:28:33 +0100 | Subject | Re: [PATCH -fixes v2 4/4] riscv: Fix config KASAN && DEBUG_VIRTUAL |
| |
Hi Alexandre,
Thanks for the series!
However, I still haven't managed to boot the kernel. What I did: 1) Checked out the riscv/fixes branch (this is the one we're using on syzbot). The latest commit was 6df2a016c0c8a3d0933ef33dd192ea6606b115e3. 2) Applied all 4 patches. 3) Used the config from the cover letter: https://gist.github.com/a-nogikh/279c85c2d24f47efcc3e865c08844138 4) Built with `make -j32 ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu-` 5) Ran with `qemu-system-riscv64 -m 2048 -smp 1 -nographic -no-reboot -device virtio-rng-pci -machine virt -device virtio-net-pci,netdev=net0 -netdev user,id=net0,restrict=on,hostfwd=tcp:127.0.0.1:12529-:22 -device virtio-blk-device,drive=hd0 -drive file=~/kernel-image/riscv64,if=none,format=raw,id=hd0 -snapshot -kernel ~/linux-riscv/arch/riscv/boot/Image -append "root=/dev/vda console=ttyS0 earlyprintk=serial"` (this is similar to how syzkaller runs qemu).
Can you please hint at what I'm doing differently?
A simple config with KASAN, KASAN_OUTLINE and DEBUG_VIRTUAL now indeed leads to a booting kernel, which was not the case before. make defconfig ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- ./scripts/config -e KASAN -e KASAN_OUTLINE -e DEBUG_VIRTUAL make olddefconfig ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu-
-- Best Regards, Aleksandr
On Mon, Feb 21, 2022 at 5:17 PM Alexandre Ghiti <alexandre.ghiti@canonical.com> wrote: > > __virt_to_phys function is called very early in the boot process (ie > kasan_early_init) so it should not be instrumented by KASAN otherwise it > bugs. > > Fix this by declaring phys_addr.c as non-kasan instrumentable. > > Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com> > --- > arch/riscv/mm/Makefile | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/riscv/mm/Makefile b/arch/riscv/mm/Makefile > index 7ebaef10ea1b..ac7a25298a04 100644 > --- a/arch/riscv/mm/Makefile > +++ b/arch/riscv/mm/Makefile > @@ -24,6 +24,9 @@ obj-$(CONFIG_KASAN) += kasan_init.o > ifdef CONFIG_KASAN > KASAN_SANITIZE_kasan_init.o := n > KASAN_SANITIZE_init.o := n > +ifdef CONFIG_DEBUG_VIRTUAL > +KASAN_SANITIZE_physaddr.o := n > +endif > endif > > obj-$(CONFIG_DEBUG_VIRTUAL) += physaddr.o > -- > 2.32.0 >
| |