|
|
Log in / Subscribe / Register

KASan for Arm

From:  Linus Walleij <linus.walleij-AT-linaro.org>
To:  Florian Fainelli <f.fainelli-AT-gmail.com>, Abbott Liu <liuwenliang-AT-huawei.com>, Russell King <linux-AT-armlinux.org.uk>, Ard Biesheuvel <ardb-AT-kernel.org>, Andrey Ryabinin <aryabinin-AT-virtuozzo.com>
Subject:  [PATCH 0/5 v8] KASan for Arm
Date:  Thu, 7 May 2020 14:45:17 +0200
Message-ID:  <20200507124522.171323-1-linus.walleij@linaro.org>
Cc:  Linus Walleij <linus.walleij-AT-linaro.org>, Arnd Bergmann <arnd-AT-arndb.de>, linux-arm-kernel-AT-lists.infradead.org
Archive-link:  Article

It's time to repost this, now that I got it into better shape.

Main changes:
- Restore the series number to v8 following my previous
  "v1" which was actually v7, following Florians versions.
  What was I thinking. :(
- Doesn't crash randomly in QEMU etc. This was because
  mmu.c was instrumented, and when we were lucky this did
  not poke around in memory that crashed us.
- Handle the undefined symbols better (like suggested by
  Ard)
- Fix up documentation.
- Better patch split in logical chunks.

Remaining issues:
- Does it work for you?
- Crash on ARMv5/v5 in v4wbi_flush_user_tlb_range+0x10/0x4c.
  I wonder why. If you know, please tell me, I naturally
  have to fix this.
- The code in kasan_init.c to first back up TTBR0 and then
  restore it looks *fragile* even if it is working. I think
  we need to do something better in a per-proc file such
  as is done in cpu_v7_switch_mm() and other well organized
  MMU manipulation, I certainly feel this should be done
  like that.

Abbott Liu (1):
  ARM: Define the virtual space of KASan's shadow region

Andrey Ryabinin (4):
  ARM: Disable KASan instrumentation for some code
  ARM: Replace string mem* functions for KASan
  ARM: Initialize the mapping of KASan shadow memory
  ARM: Enable KASan for ARM

 Documentation/arm/memory.rst       |   5 +
 Documentation/dev-tools/kasan.rst  |   4 +-
 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     |   9 +-
 arch/arm/include/asm/string.h      |  21 ++
 arch/arm/include/asm/thread_info.h |   4 +
 arch/arm/kernel/entry-armv.S       |   5 +-
 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           | 324 +++++++++++++++++++++++++++++
 arch/arm/mm/mmu.c                  |  18 ++
 arch/arm/mm/pgd.c                  |  15 +-
 arch/arm/vdso/Makefile             |   2 +
 24 files changed, 581 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.25.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


Copyright © 2020, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds