Messages in this thread | | | Date | Fri, 6 Mar 2015 15:38:21 -0500 | From | Steven Rostedt <> | Subject | Re: Possible lock-less list race in scheduler_ipi() |
| |
On Fri, 6 Mar 2015 19:39:44 +0000 (UTC) Mathieu Desnoyers <mathieu.desnoyers@efficios.com> 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.
-- Steve
| |