[PATCH] powerpc/kasan/book3s_64: warn when running with hash MMU
Christophe Leroy
christophe.leroy at csgroup.eu
Thu Oct 6 16:04:52 AEDT 2022
+ 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 ?
>
> But maybe I'm misremembering. Looking now it's not entirely straight
> forward with the way the headers are structured. So I guess I'm wrong
> about that.
>
>> Such crashes look like this:
>>
>> BUG: Unable to handle kernel data access at 0xc00e00000308b100
>> Faulting instruction address: 0xc0000000006d0fcc
>> Oops: Kernel access of bad area, sig: 11 [#1]
>> LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
>> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.0.0-rc5-02183-g3ab165dea2a2 #13
>> [...regs...]
>> NIP [c0000000006d0fcc] kasan_byte_accessible+0xc/0x20
>> LR [c0000000006cd9cc] __kasan_check_byte+0x2c/0xa0
>> Call Trace:
...
>>
>> Change init_book3s_64.c::kasan_init() to emit a warning backtrace and
>> taint the kernel when not running on radix. When the kernel likely
>> oopses later, the 'W' taint flag in the report should help minimize
>> developer time spent trying to understand what's gone wrong.
>
> Should we just panic() directly?
But then you loose any sight that the problem is in
kasan_byte_accessible() and have to be fixed there.
Christophe
More information about the Linuxppc-dev
mailing list