Message ID | 20220227134726.27584-1-lecopzer.chen@mediatek.com (mailing list archive) |
---|---|
Headers | show |
Series | arm: kasan: support CONFIG_KASAN_VMALLOC | expand |
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.
> 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