]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - kernel/padata.c
cpqarray: fix info leak in ida_locked_ioctl()
[karo-tx-linux.git] / kernel / padata.c
index 072f4ee4eb893a5341942146775c2ce9fcc1dbc8..07af2c95dcfeea37f855db214e8e3405274bddb6 100644 (file)
@@ -846,6 +846,8 @@ static int padata_cpu_callback(struct notifier_block *nfb,
        switch (action) {
        case CPU_ONLINE:
        case CPU_ONLINE_FROZEN:
+       case CPU_DOWN_FAILED:
+       case CPU_DOWN_FAILED_FROZEN:
                if (!pinst_has_cpu(pinst, cpu))
                        break;
                mutex_lock(&pinst->lock);
@@ -857,6 +859,8 @@ static int padata_cpu_callback(struct notifier_block *nfb,
 
        case CPU_DOWN_PREPARE:
        case CPU_DOWN_PREPARE_FROZEN:
+       case CPU_UP_CANCELED:
+       case CPU_UP_CANCELED_FROZEN:
                if (!pinst_has_cpu(pinst, cpu))
                        break;
                mutex_lock(&pinst->lock);
@@ -865,22 +869,6 @@ static int padata_cpu_callback(struct notifier_block *nfb,
                if (err)
                        return notifier_from_errno(err);
                break;
-
-       case CPU_UP_CANCELED:
-       case CPU_UP_CANCELED_FROZEN:
-               if (!pinst_has_cpu(pinst, cpu))
-                       break;
-               mutex_lock(&pinst->lock);
-               __padata_remove_cpu(pinst, cpu);
-               mutex_unlock(&pinst->lock);
-
-       case CPU_DOWN_FAILED:
-       case CPU_DOWN_FAILED_FROZEN:
-               if (!pinst_has_cpu(pinst, cpu))
-                       break;
-               mutex_lock(&pinst->lock);
-               __padata_add_cpu(pinst, cpu);
-               mutex_unlock(&pinst->lock);
        }
 
        return NOTIFY_OK;
@@ -1086,18 +1074,18 @@ struct padata_instance *padata_alloc(struct workqueue_struct *wq,
 
        pinst->flags = 0;
 
-#ifdef CONFIG_HOTPLUG_CPU
-       pinst->cpu_notifier.notifier_call = padata_cpu_callback;
-       pinst->cpu_notifier.priority = 0;
-       register_hotcpu_notifier(&pinst->cpu_notifier);
-#endif
-
        put_online_cpus();
 
        BLOCKING_INIT_NOTIFIER_HEAD(&pinst->cpumask_change_notifier);
        kobject_init(&pinst->kobj, &padata_attr_type);
        mutex_init(&pinst->lock);
 
+#ifdef CONFIG_HOTPLUG_CPU
+       pinst->cpu_notifier.notifier_call = padata_cpu_callback;
+       pinst->cpu_notifier.priority = 0;
+       register_hotcpu_notifier(&pinst->cpu_notifier);
+#endif
+
        return pinst;
 
 err_free_masks: