[PATCH] powerpc/kasan/book3s_64: warn when running with hash MMU

Christophe Leroy christophe.leroy at csgroup.eu
Tue Oct 11 21:25:05 AEDT 2022



Le 11/10/2022 à 12:00, Michael Ellerman a écrit :
> Nathan Lynch <nathanl at linux.ibm.com> writes:
>> Michael Ellerman <mpe at ellerman.id.au> writes:
>>> Christophe Leroy <christophe.leroy at csgroup.eu> writes:
>>>> + KASAN list
>>>>
>>>> Le 06/10/2022 à 06:10, Michael Ellerman a écrit :
>>>>> Nathan Lynch <nathanl at linux.ibm.com> writes:
>>>>>> kasan is known to crash at boot on book3s_64 with non-radix MMU. As
>>>>>> noted in commit 41b7a347bf14 ("powerpc: Book3S 64-bit outline-only
>>>>>> KASAN support"):
>>>>>>
>>>>>>     A kernel with CONFIG_KASAN=y will crash during boot on a machine
>>>>>>     using HPT translation because not all the entry points to the
>>>>>>     generic KASAN code are protected with a call to kasan_arch_is_ready().
>>>>>
>>>>> I guess I thought there was some plan to fix that.
>>>>
>>>> I was thinking the same.
>>>>
>>>> Do we have a list of the said entry points to the generic code that are
>>>> lacking a call to kasan_arch_is_ready() ?
>>>>
>>>> Typically, the BUG dump below shows that kasan_byte_accessible() is
>>>> lacking the check. It should be straight forward to add
>>>> kasan_arch_is_ready() check to kasan_byte_accessible(), shouldn't it ?
>>>
>>> Yes :)
>>>
>>> And one other spot, but the patch below boots OK for me. I'll leave it
>>> running for a while just in case there's a path I've missed.
>>
>> It works for me too, thanks (p8 pseries qemu).
> 
> It works but I still see the kasan shadow getting mapped, which we would
> ideally avoid.
> 
>  From PTDUMP:
> 
> ---[ kasan shadow mem start ]---
> 0xc00f000000000000-0xc00f00000006ffff  0x00000000045e0000       448K         r  w       pte  valid  present        dirty  accessed
> 0xc00f3ffffffe0000-0xc00f3fffffffffff  0x0000000004d80000       128K         r  w       pte  valid  present        dirty  accessed
> 
> I haven't worked out how those are getting mapped.


kasan_populate_vmalloc() maybe ?

Christophe


More information about the Linuxppc-dev mailing list