Thread (41 messages) 41 messages, 7 authors, 2023-04-28

Re: BUG : PowerPC RCU: torture test failed with __stack_chk_fail

From: Joel Fernandes <hidden>
Date: 2023-04-24 18:55:40
Also in: lkml, rcu

This is amazing debugging Boqun, like a boss! One comment below:
quoted
quoted
Or something simple I haven't thought of? :)
At what points can r13 change?  Only when some particular functions are
called?
r13 is the local paca:

        register struct paca_struct *local_paca asm("r13");

, which is a pointer to percpu data.

So if a task schedule from one CPU to anotehr CPU, the value gets
changed.
It appears the whole issue, per your analysis, is that the stack
checking code in gcc should not cache or alias r13, and must read its
most up-to-date value during stack checking, as its value may have
changed during a migration to a new CPU.

Did I get that right?

IMO, even without a reproducer, gcc on PPC should just not do that,
that feels terribly broken for the kernel. I wonder what clang does,
I'll go poke around with compilerexplorer after lunch.

Adding +Peter Zijlstra as well to join the party as I have a feeling
he'll be interested. ;-)

thanks,

 - Joel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help