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

Segher Boessenkool segher at kernel.crashing.org
Wed Jul 4 23:45:15 AEST 2018


On Wed, Jul 04, 2018 at 11:11:59PM +1000, Michael Ellerman wrote:
> Christophe LEROY <christophe.leroy at c-s.fr> writes:
> 
> > 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


More information about the Linuxppc-dev mailing list