Re: [PATCH v4] x86/mce: Avoid infinite loop for copy from user recovery

From: Borislav Petkov
Date: Tue Jan 19 2021 - 06:18:26 EST


On Fri, Jan 15, 2021 at 03:23:46PM -0800, Luck, Tony wrote:
> On Fri, Jan 15, 2021 at 12:51:03PM -0800, Luck, Tony wrote:
> > static void kill_me_now(struct callback_head *ch)
> > {
> > + p->mce_count = 0;
> > force_sig(SIGBUS);
> > }
>
> Brown paper bag time ... I just pasted that line from kill_me_maybe()
> and I thought I did a re-compile ... but obviously not since it gives
>
> error: ‘p’ undeclared (first use in this function)
>
> Option a) (just like kill_me_maybe)
>
> struct task_struct *p = container_of(cb, struct task_struct, mce_kill_me);
>
> Option b) (simpler ... not sure why PeterZ did the container_of thing
>
> current->mce_count = 0;

Right, he says it is the canonical way to get it out of callback_head.
I don't think current will change while the #MC handler runs but we can
adhere to the design pattern here and do container_of() ...

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette