kthread: call wake_up_process() without the lock being held
From the POV of synchronization, there should be no need to call wake_up_process() with the 'kthread_create_lock' being held. Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Cc: Ingo Molnar <mingo@elte.hu> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Andy Whitcroft <apw@shadowen.org> Cc: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a2d416dcc9
commit
cbd9b67bd3
|
@ -144,9 +144,9 @@ struct task_struct *kthread_create(int (*threadfn)(void *data),
|
||||||
|
|
||||||
spin_lock(&kthread_create_lock);
|
spin_lock(&kthread_create_lock);
|
||||||
list_add_tail(&create.list, &kthread_create_list);
|
list_add_tail(&create.list, &kthread_create_list);
|
||||||
wake_up_process(kthreadd_task);
|
|
||||||
spin_unlock(&kthread_create_lock);
|
spin_unlock(&kthread_create_lock);
|
||||||
|
|
||||||
|
wake_up_process(kthreadd_task);
|
||||||
wait_for_completion(&create.done);
|
wait_for_completion(&create.done);
|
||||||
|
|
||||||
if (!IS_ERR(create.result)) {
|
if (!IS_ERR(create.result)) {
|
||||||
|
|
Loading…
Reference in New Issue