Carl-Daniel Hailfinger wrote:
Can you explain what, if any, effect this bug had or could have had in practice?
Sure. 1.) If gcc had decided to reload bist from stack after initializing the global variable pointer, bist would have been nonzero, an indicator for processor failure. 2.) If gcc had decided to use the stack location of bist as a scratch register (and it probably is free to do so as long as the contents are restored before returning), it would have clobbered the global variable pointer, leading to NULL pointer dereferences. 3.) Any accesses to init_detected would have resulted in accessing 4 bytes above the top of stack (0x87ffc-0x87fff), something the rest of the code deliberately avoids.
Thanks! If you add the above to the commit message I say:
Acked-by: Peter Stuge peter@stuge.se