Re: [PATCH 1/2] x86/dumpstack: on oops do not rewind stack for kthread

From: Thomas Gleixner
Date: Fri Oct 21 2016 - 04:08:15 EST


On Fri, 21 Oct 2016, Peter Zijlstra wrote:
> We need to preserve the entire struct kthread on the stack, kthread just
> abuses that pointer to stash an on-stack kthread descriptor. See
> kthread():
>
> current->vfork_done = &self.exited;
>
> Its a horrible horrible thing kthread does. I suppose there might have
> been some intent by keeping that exited completion last in the
> structure, but *shudder*.
>
> But yes, leaving enough stack to not clobber that might keep this horror
> show working.
>
> ISTR talk about alternative schemes for this a long time ago, but I
> cannot recall :-(

The simplest solution would be to stick struct kthread into task_struct,
but that's bloat.

But we can allocate it seperately along with kthread_create_info. That's
pretty straight forward.

Thanks,

tglx