Hi! > From: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> > > commit 98d0c8ebf77e0ba7c54a9ae05ea588f0e9e3f46e upstream. > > If the unwinder is called before the ORC data has been initialized, > orc_find() returns NULL, and it tries to fall back to using frame > pointers. This can cause some unexpected warnings during boot. > > Move the 'orc_init' check from orc_find() to __unwind_init(), so that it > doesn't even try to unwind from an uninitialized state. > @@ -563,6 +560,9 @@ EXPORT_SYMBOL_GPL(unwind_next_frame); > void __unwind_start(struct unwind_state *state, struct task_struct *task, > struct pt_regs *regs, unsigned long *first_frame) > { > + if (!orc_init) > + goto done; > + > memset(state, 0, sizeof(*state)); > state->task = task; > As this returns the *state to the caller, should the "goto done" move below the memset? Otherwise we are returning partialy-initialized struct, which is ... weird. Best regards, Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Attachment:
signature.asc
Description: Digital signature