Subject: Re: [RFC PATCH V1 7/8] powerpc/mm: kasan: Add kasan support for ppc64

From: "Aneesh Kumar K.V" <[email-masked]>
Date: Tue, 18 Aug 2015 11:04:37 +0530

Andrey Ryabinin <[email-masked]> writes:

> 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 <[email-masked]>
>> ---
>>  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) ?

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