Re: [PATCH RT V2] sched: Prevent task state corruption by spurious lock wakeup

From: Thomas Gleixner
Date: Tue Jun 06 2017 - 14:36:03 EST


On Tue, 6 Jun 2017, Peter Zijlstra wrote:

> On Tue, Jun 06, 2017 at 02:20:37PM +0200, Thomas Gleixner wrote:
> > --- a/kernel/sched/core.c
> > +++ b/kernel/sched/core.c
> > @@ -2210,7 +2210,7 @@ EXPORT_SYMBOL(wake_up_process);
> > */
> > int wake_up_lock_sleeper(struct task_struct *p)
> > {
> > - return try_to_wake_up(p, TASK_ALL, WF_LOCK_SLEEPER);
> > + return try_to_wake_up(p, TASK_UNINTERRUPTIBLE, WF_LOCK_SLEEPER);
> > }
> >
> > int wake_up_state(struct task_struct *p, unsigned int state)
>
> Do we want this?

Definitely.

> ---
> Subject: sched: Remove TASK_ALL
>
> It's unused:
>
> $ git grep "\<TASK_ALL\>" | wc -l
> 1
>
> And dangerous, kill the bugger.
>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>

Acked-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

> ---
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 3dfa5f99d6ee..e88aadbe2071 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -94,7 +94,6 @@ struct task_group;
>
> /* Convenience macros for the sake of wake_up(): */
> #define TASK_NORMAL (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE)
> -#define TASK_ALL (TASK_NORMAL | __TASK_STOPPED | __TASK_TRACED)
>
> /* get_task_state(): */
> #define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \
>