[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