arch/arm/Kconfig | 2 ++ arch/arm/include/asm/kasan_def.h | 11 ++++++++++- arch/arm/mm/kasan_init.c | 6 +++++- 3 files changed, 17 insertions(+), 2 deletions(-)
Since the framework of KASAN_VMALLOC is well-developed,
It's easy to support for ARM that simply not to map shadow of VMALLOC
area on kasan_init.
Since the virtual address of vmalloc for Arm is also between
MODULE_VADDR and 0x100000000 (ZONE_HIGHMEM), which means the shadow
address has already included between KASAN_SHADOW_START and
KASAN_SHADOW_END.
Thus we need to change nothing for memory map of Arm.
This can fix ARM_MODULE_PLTS with KASan, support KASan for higmem
and provide the first step to support CONFIG_VMAP_STACK with Arm.
Test on
1. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping.
2. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping + LPAE.
3. Qemu with memory 2G and vmalloc=500M for 2G/2G mapping.
v3:
rebase on 5.17-rc5.
Add simple doc for "arm: kasan: support CONFIG_KASAN_VMALLOC"
Tweak commit message.
v2:
rebase on 5.17-rc3
Lecopzer Chen (2):
arm: kasan: support CONFIG_KASAN_VMALLOC
arm: kconfig: fix MODULE_PLTS for KASAN with KASAN_VMALLOC
arch/arm/Kconfig | 2 ++
arch/arm/include/asm/kasan_def.h | 11 ++++++++++-
arch/arm/mm/kasan_init.c | 6 +++++-
3 files changed, 17 insertions(+), 2 deletions(-)
--
2.25.1
On Sun, Feb 27, 2022 at 2:48 PM Lecopzer Chen <lecopzer.chen@mediatek.com> wrote: > Since the framework of KASAN_VMALLOC is well-developed, > It's easy to support for ARM that simply not to map shadow of VMALLOC > area on kasan_init. > > Since the virtual address of vmalloc for Arm is also between > MODULE_VADDR and 0x100000000 (ZONE_HIGHMEM), which means the shadow > address has already included between KASAN_SHADOW_START and > KASAN_SHADOW_END. > Thus we need to change nothing for memory map of Arm. > > This can fix ARM_MODULE_PLTS with KASan, support KASan for higmem > and provide the first step to support CONFIG_VMAP_STACK with Arm. > > > Test on > 1. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping. > 2. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping + LPAE. > 3. Qemu with memory 2G and vmalloc=500M for 2G/2G mapping. > > v3: > rebase on 5.17-rc5. > Add simple doc for "arm: kasan: support CONFIG_KASAN_VMALLOC" > Tweak commit message. Ater testing this with my kernel-in-vmalloc patches and some hacks, I got the kernel booting in the VMALLOC area with KASan enabled! See: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git/log/?h=kernel-in-vmalloc-v5.17-rc1 That's a pretty serious stress test. So: Tested-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> for the series. I suppose you could put this into Russell's patch tracker, it's gonna be for kernel v5.19 by now but why stress. It seems I can fix up kernel-in-vmalloc on top and submit that for v5.19 as well. Yours, Linus Walleij
On Fri, Mar 11, 2022 at 12:08:52AM +0100, Linus Walleij wrote: > On Sun, Feb 27, 2022 at 2:48 PM Lecopzer Chen > <lecopzer.chen@mediatek.com> wrote: > > > Since the framework of KASAN_VMALLOC is well-developed, > > It's easy to support for ARM that simply not to map shadow of VMALLOC > > area on kasan_init. > > > > Since the virtual address of vmalloc for Arm is also between > > MODULE_VADDR and 0x100000000 (ZONE_HIGHMEM), which means the shadow > > address has already included between KASAN_SHADOW_START and > > KASAN_SHADOW_END. > > Thus we need to change nothing for memory map of Arm. > > > > This can fix ARM_MODULE_PLTS with KASan, support KASan for higmem > > and provide the first step to support CONFIG_VMAP_STACK with Arm. > > > > > > Test on > > 1. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping. > > 2. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping + LPAE. > > 3. Qemu with memory 2G and vmalloc=500M for 2G/2G mapping. > > > > v3: > > rebase on 5.17-rc5. > > Add simple doc for "arm: kasan: support CONFIG_KASAN_VMALLOC" > > Tweak commit message. > > Ater testing this with my kernel-in-vmalloc patches and some hacks, I got > the kernel booting in the VMALLOC area with KASan enabled! > See: > https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git/log/?h=kernel-in-vmalloc-v5.17-rc1 > > That's a pretty serious stress test. So: > Tested-by: Linus Walleij <linus.walleij@linaro.org> > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> > for the series. > > I suppose you could put this into Russell's patch tracker, it's gonna be > for kernel v5.19 by now but why stress. It seems I can fix up > kernel-in-vmalloc on top and submit that for v5.19 as well. Ard's series already adds vmap stack support (which we've been doing some last minute panic-debugging on to get it ready for this merge window), but the above description makes it sound like this series is a pre-requisit for that. Is it? Will Ard's work cause further regressions because this series isn't merged. Please clarify - and urgently, there is not much time left before the merge window opens. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
> On Fri, Mar 11, 2022 at 12:08:52AM +0100, Linus Walleij wrote: > > On Sun, Feb 27, 2022 at 2:48 PM Lecopzer Chen > > <lecopzer.chen@mediatek.com> wrote: > > > > > Since the framework of KASAN_VMALLOC is well-developed, > > > It's easy to support for ARM that simply not to map shadow of VMALLOC > > > area on kasan_init. > > > > > > Since the virtual address of vmalloc for Arm is also between > > > MODULE_VADDR and 0x100000000 (ZONE_HIGHMEM), which means the shadow > > > address has already included between KASAN_SHADOW_START and > > > KASAN_SHADOW_END. > > > Thus we need to change nothing for memory map of Arm. > > > > > > This can fix ARM_MODULE_PLTS with KASan, support KASan for higmem > > > and provide the first step to support CONFIG_VMAP_STACK with Arm. > > > > > > > > > Test on > > > 1. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping. > > > 2. Qemu with memory 2G and vmalloc=500M for 3G/1G mapping + LPAE. > > > 3. Qemu with memory 2G and vmalloc=500M for 2G/2G mapping. > > > > > > v3: > > > rebase on 5.17-rc5. > > > Add simple doc for "arm: kasan: support CONFIG_KASAN_VMALLOC" > > > Tweak commit message. > > > > Ater testing this with my kernel-in-vmalloc patches and some hacks, I got > > the kernel booting in the VMALLOC area with KASan enabled! > > See: > > https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git/log/?h=kernel-in-vmalloc-v5.17-rc1 > > > > That's a pretty serious stress test. So: > > Tested-by: Linus Walleij <linus.walleij@linaro.org> > > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> > > for the series. > > > > I suppose you could put this into Russell's patch tracker, it's gonna be > > for kernel v5.19 by now but why stress. It seems I can fix up > > kernel-in-vmalloc on top and submit that for v5.19 as well. > > Ard's series already adds vmap stack support (which we've been doing > some last minute panic-debugging on to get it ready for this merge > window), but the above description makes it sound like this series is > a pre-requisit for that. > > Is it? Will Ard's work cause further regressions because this series > isn't merged. > > Please clarify - and urgently, there is not much time left before the > merge window opens. > Sorry I didn't describe it clearly, config VMAP_STACK default y bool "Use a virtually-mapped stack" depends on HAVE_ARCH_VMAP_STACK depends on !KASAN || KASAN_HW_TAGS || KASAN_VMALLOC This means KASAN can support with VMAP_STACK=y BRs, Lecopzer
© 2016 - 2026 Red Hat, Inc.