[RFC PATCH 0/5] powerpc: KASAN for 64-bit Book3E
Christophe Leroy
christophe.leroy at c-s.fr
Sat Feb 16 03:39:43 AEDT 2019
On 02/15/2019 12:04 AM, Daniel Axtens wrote:
> Building on the work of Christophe, Aneesh and Balbir, I've ported
> KASAN to the e6500, a 64-bit Book3E processor which doesn't have a
> hashed page table. It applies on top of Christophe's series, v5.
>
> It requires some changes to the KASAN core - please let me know if
> these are problematic and we see if an alternative approach is
> possible.
>
> The KASAN shadow area is mapped into vmemmap space:
> 0x8000 0400 0000 0000 to 0x8000 0600 0000 0000.
> To do this we require that vmemmap be disabled. (This is the default
> in the kernel config that QorIQ provides for the machine in their
> SDK anyway - they use flat memory.)
>
> Only outline instrumentation is supported and only KASAN_MINIMAL works.
> Only the kernel linear mapping (0xc000...) is checked. The vmalloc and
> ioremap areas (also in 0x800...) are all mapped to a zero page. As
> with the Book3S hash series, this requires overriding the memory <->
> shadow mapping.
>
> Also, as with both previous 64-bit series, early instrumentation is not
> supported.
>
> KVM, kexec and xmon have not been tested.
>
> Thanks to those who have done the heavy lifting over the past several years:
> - Christophe's 32 bit series: https://lists.ozlabs.org/pipermail/linuxppc-dev/2019-February/185379.html
> - Aneesh's Book3S hash series: https://lwn.net/Articles/655642/
> - Balbir's Book3S radix series: https://patchwork.ozlabs.org/patch/795211/
>
> While useful if you have an Book3E device, this is mostly intended
> as a warm-up exercise for reviving Aneesh's series for book3s hash.
> In particular, changes to the kasan core are going to be required
> for hash and radix as well.
>
> Regards,
> Daniel
Hi Daniel,
I'll look into your series in more details later, for now I just want to
let you know that I get a build failure:
LD vmlinux.o
lib/string.o: In function `memcmp':
/root/linux-powerpc/lib/string.c:857: multiple definition of `memcmp'
arch/powerpc/lib/memcmp_32.o:/root/linux-powerpc/arch/powerpc/lib/memcmp_32.S:16:
first defined here
Christophe
>
> Daniel Axtens (5):
> kasan: do not open-code addr_has_shadow
> kasan: allow architectures to manage the memory-to-shadow mapping
> kasan: allow architectures to provide an outline readiness check
> powerpc: move KASAN into its own subdirectory
> powerpc: KASAN for 64bit Book3E
>
> arch/powerpc/Kconfig | 1 +
> arch/powerpc/Makefile | 2 +
> arch/powerpc/include/asm/kasan.h | 77 +++++++++++++++++--
> arch/powerpc/include/asm/ppc_asm.h | 7 ++
> arch/powerpc/include/asm/string.h | 7 +-
> arch/powerpc/lib/mem_64.S | 6 +-
> arch/powerpc/lib/memcmp_64.S | 5 +-
> arch/powerpc/lib/memcpy_64.S | 3 +-
> arch/powerpc/lib/string.S | 15 ++--
> arch/powerpc/mm/Makefile | 4 +-
> arch/powerpc/mm/kasan/Makefile | 6 ++
> .../{kasan_init.c => kasan/kasan_init_32.c} | 0
> arch/powerpc/mm/kasan/kasan_init_book3e_64.c | 53 +++++++++++++
> arch/powerpc/purgatory/Makefile | 3 +
> arch/powerpc/xmon/Makefile | 1 +
> include/linux/kasan.h | 6 ++
> mm/kasan/generic.c | 5 +-
> mm/kasan/generic_report.c | 2 +-
> mm/kasan/kasan.h | 6 +-
> mm/kasan/report.c | 6 +-
> mm/kasan/tags.c | 3 +-
> 21 files changed, 188 insertions(+), 30 deletions(-)
> create mode 100644 arch/powerpc/mm/kasan/Makefile
> rename arch/powerpc/mm/{kasan_init.c => kasan/kasan_init_32.c} (100%)
> create mode 100644 arch/powerpc/mm/kasan/kasan_init_book3e_64.c
>
More information about the Linuxppc-dev
mailing list