[RFC PATCH V1 7/8] powerpc/mm: kasan: Add kasan support for ppc64
Andrey Ryabinin
ryabinin.a.a at gmail.com
Mon Aug 17 22:13:27 AEST 2015
On 08/17/2015 09:36 AM, Aneesh Kumar K.V wrote:
> We use the region with region ID 0xe as the kasan shadow region. Since
> we use hash page table, we can't have the early zero page based shadow
> region support. Hence we disable kasan in the early code and runtime
> enable this. We could imporve the condition using static keys. (but
> that is for a later patch). We also can't support inline instrumentation
> because our kernel mapping doesn't give us a large enough free window
> to map the entire range. For VMALLOC and VMEMMAP region we just
> return a zero page instead of having a translation bolted into the
> htab. This simplifies handling VMALLOC and VMEMAP area. Kasan is not
> tracking both the region as of now
>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
> ---
> arch/powerpc/include/asm/kasan.h | 74 ++++++++++++++++++++++++++++++++
> arch/powerpc/include/asm/pgtable-ppc64.h | 1 +
> arch/powerpc/include/asm/ppc_asm.h | 10 +++++
> arch/powerpc/include/asm/string.h | 13 ++++++
> arch/powerpc/kernel/Makefile | 1 +
> arch/powerpc/kernel/prom_init_check.sh | 2 +-
> arch/powerpc/kernel/setup_64.c | 3 ++
> arch/powerpc/lib/mem_64.S | 6 ++-
> arch/powerpc/lib/memcpy_64.S | 3 +-
> arch/powerpc/lib/ppc_ksyms.c | 10 +++++
> arch/powerpc/mm/Makefile | 3 ++
> arch/powerpc/mm/kasan_init.c | 44 +++++++++++++++++++
> arch/powerpc/mm/slb_low.S | 4 ++
> arch/powerpc/platforms/Kconfig.cputype | 1 +
> 14 files changed, 171 insertions(+), 4 deletions(-)
> create mode 100644 arch/powerpc/include/asm/kasan.h
> create mode 100644 arch/powerpc/mm/kasan_init.c
>
Did you disable stack instrumentation (in scripts/Makefile.kasa),
or you version of gcc doesn't support it (e.g. like 4.9.x on x86) ?
Because this can't work with stack instrumentation as you don't have shadow for stack in early code.
But this should be doable, as I think. All you need is to setup shadow for init task's
stack before executing any instrumented function.
More information about the Linuxppc-dev
mailing list