Containerized syslog working properly
[safe/jmp/linux-2.6] / kernel / padata.c
index ca89dfb..fdd8ae6 100644 (file)
@@ -659,7 +659,7 @@ static int padata_cpu_callback(struct notifier_block *nfb,
                err = __padata_add_cpu(pinst, cpu);
                mutex_unlock(&pinst->lock);
                if (err)
-                       return NOTIFY_BAD;
+                       return notifier_from_errno(err);
                break;
 
        case CPU_DOWN_PREPARE:
@@ -670,7 +670,7 @@ static int padata_cpu_callback(struct notifier_block *nfb,
                err = __padata_remove_cpu(pinst, cpu);
                mutex_unlock(&pinst->lock);
                if (err)
-                       return NOTIFY_BAD;
+                       return notifier_from_errno(err);
                break;
 
        case CPU_UP_CANCELED:
@@ -763,7 +763,10 @@ void padata_free(struct padata_instance *pinst)
 #ifdef CONFIG_HOTPLUG_CPU
        unregister_hotcpu_notifier(&pinst->cpu_notifier);
 #endif
+       get_online_cpus();
        padata_flush_queues(pinst->pd);
+       put_online_cpus();
+
        padata_free_pd(pinst->pd);
        free_cpumask_var(pinst->cpumask);
        kfree(pinst);