[PATCH 0/5 v13] KASan for Arm

Linus Walleij linus.walleij at linaro.org
Mon Sep 14 08:43:19 EDT 2020


This is the 13th iteration of KASan for ARM/Aarch32.

There are no real changes from v12 other than rebasing onto
v5.9-rc1. This mostly works and you are encouraged to test
this patch set to find memory out of bounds bugs with
ARM32 platforms and drivers.

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

Q: What remains to be solved?

A: 100% confidence that this works. Florian is experiencing a
problem with crashes on Broadcom chips, I see a problem
when using Qualcomm APQ8060, and Ard has a third crash.

My working hypothesis is that this is due to clashes in the
initial section mapping table, such as when earlymaps are
set up, or similar. That is why I am now piece by piece
digging into that kernel code. I have so far determined that
the early section mappings (1MB segments) are working just
fine.

What I now need to determine and hash out is any potential
clashes between these and kasan_early_init()
that does not cause immediage crashes but maybe create
problems later on when e.g. the KASan shadow memory
collides with something like the attached device tree.

We need to detect and print proper diagnostic messages
when this happens so we can nail down the cause.

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                  |  32 +++
 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                 |  21 ++
 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                      | 264 ++++++++++++++++++
 arch/arm/mm/mmu.c                             |  18 ++
 arch/arm/mm/pgd.c                             |  16 +-
 arch/arm/vdso/Makefile                        |   2 +
 26 files changed, 527 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




More information about the linux-arm-kernel mailing list