Thread (4 messages) flat view 4 messages, 3 authors, 2018-07-04

Re: How is this possible - Register r30 contains 0xc2236400 instead of 0xc6236400

From: Segher Boessenkool <hidden>
Date: 2018-07-04 13:46:03

On Wed, Jul 04, 2018 at 11:11:59PM +1000, Michael Ellerman wrote:
Christophe LEROY [off-list ref] writes:
quoted
Kernel Oops at 0xc0334d5c for reading at address 0xc2236450 which 
corresponds to r30 + 80

But r30 should contain what's at r3 + 16 that is at 0xc619ec10 so r30 
should be c6236400 as shown below (print_hex_dump(regs->gpr[3]) added at 
end of __die() )

So how can r30 contain 0xc2236400 instead ?
The simplest answer is that memory was modified between the time we
loaded it into r30 and when you print it.

So it did contain 0xc2236400 but has since been modified to now contain
0xc6236400.

The thing that makes me less certain, is that c6 would be the correct
value (I think?), so it's been modified back to the correct value, which
seems lucky.

Mysterious.
That depends.  Is this reproducible at all?  It is a single bit flip.


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