Re: Possible lock-less list race in scheduler_ipi()

From: Steven Rostedt
Date: Fri Mar 06 2015 - 15:39:36 EST


On Fri, 6 Mar 2015 15:38:21 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> On Fri, 6 Mar 2015 19:39:44 +0000 (UTC)
> Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> wrote:
>
> ask concurrently with the llist iteration within sched_ttwu_pending().
> >
> > AFAIU, ttwu_queue_remote() is called from ttwu_queue() without holding
> > the rq lock. So I'm wondering what prevents corruption of the wake_list
> > in this situation.
>
> I guess if it is on the wake_list, then the task's state is already
> RUNNING. Any other task can switch a task's state to RUNNING but only
> the task itself can switch it back to something else. If the task is on
> the wake_list, it's state is already RUNNING, but it has not run yet.
> That means any other wakeup will jump to the "goto out" and skip over
> the ttwu_queue() call.

If my assumption is indeed the case, then these types of subtleties
really need comments in the code.

-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/