|
@@ -772,7 +772,7 @@ struct workqueue_struct *__create_workqueue_key(const char *name,
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(__create_workqueue_key);
|
|
EXPORT_SYMBOL_GPL(__create_workqueue_key);
|
|
|
|
|
|
-static void cleanup_workqueue_thread(struct cpu_workqueue_struct *cwq, int cpu)
|
|
|
|
|
|
+static void cleanup_workqueue_thread(struct cpu_workqueue_struct *cwq)
|
|
{
|
|
{
|
|
/*
|
|
/*
|
|
* Our caller is either destroy_workqueue() or CPU_DEAD,
|
|
* Our caller is either destroy_workqueue() or CPU_DEAD,
|
|
@@ -808,7 +808,6 @@ static void cleanup_workqueue_thread(struct cpu_workqueue_struct *cwq, int cpu)
|
|
void destroy_workqueue(struct workqueue_struct *wq)
|
|
void destroy_workqueue(struct workqueue_struct *wq)
|
|
{
|
|
{
|
|
const cpumask_t *cpu_map = wq_cpu_map(wq);
|
|
const cpumask_t *cpu_map = wq_cpu_map(wq);
|
|
- struct cpu_workqueue_struct *cwq;
|
|
|
|
int cpu;
|
|
int cpu;
|
|
|
|
|
|
get_online_cpus();
|
|
get_online_cpus();
|
|
@@ -816,10 +815,8 @@ void destroy_workqueue(struct workqueue_struct *wq)
|
|
list_del(&wq->list);
|
|
list_del(&wq->list);
|
|
spin_unlock(&workqueue_lock);
|
|
spin_unlock(&workqueue_lock);
|
|
|
|
|
|
- for_each_cpu_mask(cpu, *cpu_map) {
|
|
|
|
- cwq = per_cpu_ptr(wq->cpu_wq, cpu);
|
|
|
|
- cleanup_workqueue_thread(cwq, cpu);
|
|
|
|
- }
|
|
|
|
|
|
+ for_each_cpu_mask(cpu, *cpu_map)
|
|
|
|
+ cleanup_workqueue_thread(per_cpu_ptr(wq->cpu_wq, cpu));
|
|
put_online_cpus();
|
|
put_online_cpus();
|
|
|
|
|
|
free_percpu(wq->cpu_wq);
|
|
free_percpu(wq->cpu_wq);
|
|
@@ -860,7 +857,7 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb,
|
|
case CPU_UP_CANCELED:
|
|
case CPU_UP_CANCELED:
|
|
start_workqueue_thread(cwq, -1);
|
|
start_workqueue_thread(cwq, -1);
|
|
case CPU_DEAD:
|
|
case CPU_DEAD:
|
|
- cleanup_workqueue_thread(cwq, cpu);
|
|
|
|
|
|
+ cleanup_workqueue_thread(cwq);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|