Messages in this thread Patch in this message | | | Date | Fri, 30 Apr 2004 19:27:12 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] Fix deadlock in __create_workqueue |
| |
Srivatsa Vaddagiri <vatsa@in.ibm.com> wrote: > > Noticed a possible deadlock in __create_workqueue when CONFIG_HOTPLUG_CPU is > set. This can happen when create_workqueue_thread fails to create a worker > thread. In that case, we call destroy_workqueue with cpu hotplug lock held. > destroy_workqueue however also attempts to take the same lock.
Can we not simply do:
diff -puN kernel/workqueue.c~a kernel/workqueue.c --- 25/kernel/workqueue.c~a 2004-04-30 19:26:32.003303600 -0700 +++ 25-akpm/kernel/workqueue.c 2004-04-30 19:26:44.492404968 -0700 @@ -334,6 +334,7 @@ struct workqueue_struct *__create_workqu destroy = 1; } } + unlock_cpu_hotplug(); /* * Was there any error during startup? If yes then clean up: @@ -342,7 +343,6 @@ struct workqueue_struct *__create_workqu destroy_workqueue(wq); wq = NULL; } - unlock_cpu_hotplug(); return wq; } _
- 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/
| |