Re: [RFC PATCH V1 7/8] powerpc/mm: kasan: Add kasan support for ppc64
From: Aneesh Kumar K.V <hidden>
Date: 2015-08-18 05:34:44
Andrey Ryabinin [off-list ref] writes:
On 08/17/2015 09:36 AM, Aneesh Kumar K.V wrote:quoted
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 <redacted> --- 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.cDid 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) ?
I guess the later, because i do see this during compile scripts/Makefile.kasan:23: CONFIG_KASAN: compiler does not support all options. Trying minimal configuration scripts/kconfig/conf --silentoldconfig Kconfig
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.
I still need to look at stack and global support. So that is not yet there. -aneesh