[PATCH 0/5 v16] KASan for Arm

Nick Desaulniers ndesaulniers at google.com
Thu Oct 29 20:38:22 EDT 2020


On Thu, Oct 29, 2020 at 5:29 PM Nathan Chancellor
<natechancellor at gmail.com> wrote:
>
> On Mon, Oct 19, 2020 at 10:41:35AM +0200, Linus Walleij wrote:
> > This is the 16th and final (knock on wood) version of
> > KASan for ARM32.
> >
> > Changes since v15:
> >
> > - Things now work on all boards we have tested on including
> >   Broadcom and i.MX6Q.
> >
> > - Folded in a fix from Ard to PAGE_ALIGN() the end of
> >   mappings making everything work on all Broadcom board.
> >
> > - Folded in a fix from Ahmad Fatoum making things work
> >   with fortify on i.MX6Q.
> >
> > - Testing and testing and testing on build servers.
> >
> > - We are good to go.
> >
> > I will now put this in Russell's patch tracker for v5.11.
> >
> > 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
> >
> > This branch includes Ard's two patches already in Russell's
> > patch tracker.
> >
> >
> > 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 (1):
> >   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                  |  33 ++
> >  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/string.h                 |  26 ++
> >  arch/arm/include/asm/thread_info.h            |   8 +
> >  arch/arm/include/asm/uaccess-asm.h            |   2 +-
> >  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                       |   2 +
> >  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                      | 292 ++++++++++++++++++
> >  arch/arm/mm/mmu.c                             |  18 ++
> >  arch/arm/mm/pgd.c                             |  16 +-
> >  arch/arm/vdso/Makefile                        |   2 +
> >  26 files changed, 561 insertions(+), 14 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
> >
> > --
> > 2.26.2
> >
>
> After this series was applied and available in -next, ARCH=arm LLVM=1
> allyesconfig builds started failing:
>
> $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- KCONFIG_ALLCONFIG=<(echo CONFIG_CPU_BIG_ENDIAN=n) LLVM=1 distclean allyesconfig vmlinux
> ...
> ld.lld: error: section: .exit.data is not contiguous with other relro sections
> ...
>
> $ git bisect ld: [3f267ec60b922eff2a5c90d532357a39f155b730] Add linux-next specific files for 20201029
> # good: [23859ae44402f4d935b9ee548135dd1e65e2cbf4] Merge tag 'trace-v5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
> git bisect start '3f267ec60b922eff2a5c90d532357a39f155b730' '23859ae44402f4d935b9ee548135dd1e65e2cbf4'
> # bad: [bfa70a4ea4bfa6f87b58cf8b90b88297389c92b7] Merge remote-tracking branch 'mtd/mtd/next' into master
> git bisect bad bfa70a4ea4bfa6f87b58cf8b90b88297389c92b7
> # bad: [37a292dcf77532547f335ed5063d9169031c9b08] Merge remote-tracking branch 'sunxi/sunxi/for-next' into master
> git bisect bad 37a292dcf77532547f335ed5063d9169031c9b08
> # good: [e6d922c77db276a16f0b7933c2a9951dc9c0052c] Merge remote-tracking branch 'drm-misc-fixes/for-linux-next-fixes' into master
> git bisect good e6d922c77db276a16f0b7933c2a9951dc9c0052c
> # bad: [cbe49fbb8f6c8d29bc1d9a5a9a742ef2c2eb6320] Merge remote-tracking branch 'mvebu/for-next' into master
> git bisect bad cbe49fbb8f6c8d29bc1d9a5a9a742ef2c2eb6320
> # bad: [d0e12484e7e1ede73c538744cdbe9439f7335d01] Merge remote-tracking branch 'arm-soc/for-next' into master
> git bisect bad d0e12484e7e1ede73c538744cdbe9439f7335d01
> # good: [24a23387c15f34bad2485a9e1c3b7ac6f0fb35a6] Merge branch 'asm-generic-cleanup' into asm-generic
> git bisect good 24a23387c15f34bad2485a9e1c3b7ac6f0fb35a6
> # good: [3a8eb4d3421a2ca0f95ac3b1a8f012940d4f0d52] Merge remote-tracking branch 'kbuild/for-next' into master
> git bisect good 3a8eb4d3421a2ca0f95ac3b1a8f012940d4f0d52
> # bad: [20f96e606509ee5084690179afe1810b95617a92] Merge branches 'fixes' and 'misc' into for-next
> git bisect bad 20f96e606509ee5084690179afe1810b95617a92
> # good: [d6d51a96c7d63b7450860a3037f2d62388286a52] ARM: 9014/2: Replace string mem* functions for KASan
> git bisect good d6d51a96c7d63b7450860a3037f2d62388286a52
> # good: [5615f69bc2097452ecc954f5264d784e158d6801] ARM: 9016/2: Initialize the mapping of KASan shadow memory
> git bisect good 5615f69bc2097452ecc954f5264d784e158d6801
> # bad: [fc2933c133744305236793025b00c2f7d258b687] ARM: 9020/1: mm: use correct section size macro to describe the FDT virtual address
> git bisect bad fc2933c133744305236793025b00c2f7d258b687
> # bad: [421015713b306e47af95d4d61cdfbd96d462e4cb] ARM: 9017/2: Enable KASan for ARM
> git bisect bad 421015713b306e47af95d4d61cdfbd96d462e4cb
> # first bad commit: [421015713b306e47af95d4d61cdfbd96d462e4cb] ARM: 9017/2: Enable KASan for ARMog
>
> An allyesconfig kernel compiled with clang does not link properly with
> ld.bfd without a workaround [1], which I do not have time to apply and
> test now but can later if it is relevant. I have not done any triage on
> this yet either but I wanted to get the report out in case there is
> anything obvious.
>
> [1]: https://github.com/ClangBuiltLinux/linux/issues/325

relro? smells like:
https://lore.kernel.org/lkml/20201016175339.2429280-1-ndesaulniers@google.com/T/#u

-- 
Thanks,
~Nick Desaulniers



More information about the linux-arm-kernel mailing list