Skip to contentSkip to conversation

workqueue: proper error unwinding in cpu hotplug error path

PATCH New Akinobu Mita 1 participant 1 message Jul 15, 2008 Workqueue

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 workqueue: proper error unwinding in cpu hotplug error path

Add proper error unwinding in error path in CPU_UP_PREPARE notifier.

---
 kernel/workqueue.c |    9 +++++++++
 1 file changed, 9 insertions(+)
kernel/workqueue.c +9 -0
Index: 2.6-mmotm/kernel/workqueue.c
===================================================================
@@ -928,6 +928,15 @@ static int __devinit workqueue_cpu_callb
 				break;
 			printk(KERN_ERR "workqueue [%s] for %i failed\n",
 				wq->name, cpu);
+
+			list_for_each_entry_continue_reverse(wq, &workqueues,
+							list) {
+				cwq = per_cpu_ptr(wq->cpu_wq, cpu);
+				start_workqueue_thread(cwq, -1);
+				cleanup_workqueue_thread(cwq);
+			}
+			cpu_clear(cpu, cpu_populated_map);
+
 			return NOTIFY_BAD;
 
 		case CPU_ONLINE: