Messages in this thread | | | Date | Tue, 24 Apr 2007 19:53:32 +0400 | From | Oleg Nesterov <> | Subject | Re: [PATCH] kthread: Enhance kthread_stop to abort interruptible sleeps |
| |
On 04/24, Oleg Nesterov wrote: > > Hm, mm_release() clears ->vfork_done before complete(). > > mm_release: > > struct completion *vfork_done = tsk->vfork_done; > > if (vfork_done) { > tsk->vfork_done = NULL; > complete(vfork_done); > } > > > kthread_stop: > > set_tsk_thread_flag(tsk, TIF_KTHREAD_STOP); > signal_wake_up(tsk, 1); > > // tsk exits, sets ->vfork_done == NULL > > wait_for_completion(tsk->vfork_done);
Since the task_struct should be pinned anyway, I think kthread_stop() should do:
vfork_done = tsk->vfork_done; barrier(); if (vfork_done) wait_for_completion(vfork_done);
Oleg.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |