diff options
author | Akinobu Mita <akinobu.mita@gmail.com> | 2010-05-26 17:43:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 12:12:48 -0400 |
commit | 80b5184cc537718122e036afe7e62d202b70d077 (patch) | |
tree | d4e2b400f0e951156d64d546fd563fa5a8ab02d3 | |
parent | ad84bb5b98bf81deae97e3bcd814675d6b4e6f72 (diff) |
kernel/: convert cpu notifier to return encapsulate errno value
By the previous modification, the cpu notifier can return encapsulate
errno value. This converts the cpu notifiers for kernel/*.c
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | kernel/padata.c | 4 | ||||
-rw-r--r-- | kernel/profile.c | 4 | ||||
-rw-r--r-- | kernel/relay.c | 2 | ||||
-rw-r--r-- | kernel/smp.c | 2 | ||||
-rw-r--r-- | kernel/softirq.c | 2 | ||||
-rw-r--r-- | kernel/timer.c | 7 | ||||
-rw-r--r-- | kernel/workqueue.c | 9 |
7 files changed, 17 insertions, 13 deletions
diff --git a/kernel/padata.c b/kernel/padata.c index b1c9857f8402..fdd8ae609ce3 100644 --- a/kernel/padata.c +++ b/kernel/padata.c | |||
@@ -659,7 +659,7 @@ static int padata_cpu_callback(struct notifier_block *nfb, | |||
659 | err = __padata_add_cpu(pinst, cpu); | 659 | err = __padata_add_cpu(pinst, cpu); |
660 | mutex_unlock(&pinst->lock); | 660 | mutex_unlock(&pinst->lock); |
661 | if (err) | 661 | if (err) |
662 | return NOTIFY_BAD; | 662 | return notifier_from_errno(err); |
663 | break; | 663 | break; |
664 | 664 | ||
665 | case CPU_DOWN_PREPARE: | 665 | case CPU_DOWN_PREPARE: |
@@ -670,7 +670,7 @@ static int padata_cpu_callback(struct notifier_block *nfb, | |||
670 | err = __padata_remove_cpu(pinst, cpu); | 670 | err = __padata_remove_cpu(pinst, cpu); |
671 | mutex_unlock(&pinst->lock); | 671 | mutex_unlock(&pinst->lock); |
672 | if (err) | 672 | if (err) |
673 | return NOTIFY_BAD; | 673 | return notifier_from_errno(err); |
674 | break; | 674 | break; |
675 | 675 | ||
676 | case CPU_UP_CANCELED: | 676 | case CPU_UP_CANCELED: |
diff --git a/kernel/profile.c b/kernel/profile.c index dfadc5b729f1..1e6a0d94ea63 100644 --- a/kernel/profile.c +++ b/kernel/profile.c | |||
@@ -372,7 +372,7 @@ static int __cpuinit profile_cpu_callback(struct notifier_block *info, | |||
372 | GFP_KERNEL | __GFP_ZERO, | 372 | GFP_KERNEL | __GFP_ZERO, |
373 | 0); | 373 | 0); |
374 | if (!page) | 374 | if (!page) |
375 | return NOTIFY_BAD; | 375 | return notifier_from_errno(-ENOMEM); |
376 | per_cpu(cpu_profile_hits, cpu)[1] = page_address(page); | 376 | per_cpu(cpu_profile_hits, cpu)[1] = page_address(page); |
377 | } | 377 | } |
378 | if (!per_cpu(cpu_profile_hits, cpu)[0]) { | 378 | if (!per_cpu(cpu_profile_hits, cpu)[0]) { |
@@ -388,7 +388,7 @@ out_free: | |||
388 | page = virt_to_page(per_cpu(cpu_profile_hits, cpu)[1]); | 388 | page = virt_to_page(per_cpu(cpu_profile_hits, cpu)[1]); |
389 | per_cpu(cpu_profile_hits, cpu)[1] = NULL; | 389 | per_cpu(cpu_profile_hits, cpu)[1] = NULL; |
390 | __free_page(page); | 390 | __free_page(page); |
391 | return NOTIFY_BAD; | 391 | return notifier_from_errno(-ENOMEM); |
392 | case CPU_ONLINE: | 392 | case CPU_ONLINE: |
393 | case CPU_ONLINE_FROZEN: | 393 | case CPU_ONLINE_FROZEN: |
394 | if (prof_cpu_mask != NULL) | 394 | if (prof_cpu_mask != NULL) |
diff --git a/kernel/relay.c b/kernel/relay.c index 4268287148c1..c7cf397fb929 100644 --- a/kernel/relay.c +++ b/kernel/relay.c | |||
@@ -539,7 +539,7 @@ static int __cpuinit relay_hotcpu_callback(struct notifier_block *nb, | |||
539 | "relay_hotcpu_callback: cpu %d buffer " | 539 | "relay_hotcpu_callback: cpu %d buffer " |
540 | "creation failed\n", hotcpu); | 540 | "creation failed\n", hotcpu); |
541 | mutex_unlock(&relay_channels_mutex); | 541 | mutex_unlock(&relay_channels_mutex); |
542 | return NOTIFY_BAD; | 542 | return notifier_from_errno(-ENOMEM); |
543 | } | 543 | } |
544 | } | 544 | } |
545 | mutex_unlock(&relay_channels_mutex); | 545 | mutex_unlock(&relay_channels_mutex); |
diff --git a/kernel/smp.c b/kernel/smp.c index 3fc697336183..75c970c715d3 100644 --- a/kernel/smp.c +++ b/kernel/smp.c | |||
@@ -52,7 +52,7 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu) | |||
52 | case CPU_UP_PREPARE_FROZEN: | 52 | case CPU_UP_PREPARE_FROZEN: |
53 | if (!zalloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL, | 53 | if (!zalloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL, |
54 | cpu_to_node(cpu))) | 54 | cpu_to_node(cpu))) |
55 | return NOTIFY_BAD; | 55 | return notifier_from_errno(-ENOMEM); |
56 | break; | 56 | break; |
57 | 57 | ||
58 | #ifdef CONFIG_HOTPLUG_CPU | 58 | #ifdef CONFIG_HOTPLUG_CPU |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 0db913a5c60f..825e1126008f 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -808,7 +808,7 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, | |||
808 | p = kthread_create(run_ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu); | 808 | p = kthread_create(run_ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu); |
809 | if (IS_ERR(p)) { | 809 | if (IS_ERR(p)) { |
810 | printk("ksoftirqd for %i failed\n", hotcpu); | 810 | printk("ksoftirqd for %i failed\n", hotcpu); |
811 | return NOTIFY_BAD; | 811 | return notifier_from_errno(PTR_ERR(p)); |
812 | } | 812 | } |
813 | kthread_bind(p, hotcpu); | 813 | kthread_bind(p, hotcpu); |
814 | per_cpu(ksoftirqd, hotcpu) = p; | 814 | per_cpu(ksoftirqd, hotcpu) = p; |
diff --git a/kernel/timer.c b/kernel/timer.c index be394af5bc22..e3b8c697bde4 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
@@ -1680,11 +1680,14 @@ static int __cpuinit timer_cpu_notify(struct notifier_block *self, | |||
1680 | unsigned long action, void *hcpu) | 1680 | unsigned long action, void *hcpu) |
1681 | { | 1681 | { |
1682 | long cpu = (long)hcpu; | 1682 | long cpu = (long)hcpu; |
1683 | int err; | ||
1684 | |||
1683 | switch(action) { | 1685 | switch(action) { |
1684 | case CPU_UP_PREPARE: | 1686 | case CPU_UP_PREPARE: |
1685 | case CPU_UP_PREPARE_FROZEN: | 1687 | case CPU_UP_PREPARE_FROZEN: |
1686 | if (init_timers_cpu(cpu) < 0) | 1688 | err = init_timers_cpu(cpu); |
1687 | return NOTIFY_BAD; | 1689 | if (err < 0) |
1690 | return notifier_from_errno(err); | ||
1688 | break; | 1691 | break; |
1689 | #ifdef CONFIG_HOTPLUG_CPU | 1692 | #ifdef CONFIG_HOTPLUG_CPU |
1690 | case CPU_DEAD: | 1693 | case CPU_DEAD: |
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 77dabbf64b8f..327d2deb4451 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
@@ -1110,7 +1110,7 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, | |||
1110 | unsigned int cpu = (unsigned long)hcpu; | 1110 | unsigned int cpu = (unsigned long)hcpu; |
1111 | struct cpu_workqueue_struct *cwq; | 1111 | struct cpu_workqueue_struct *cwq; |
1112 | struct workqueue_struct *wq; | 1112 | struct workqueue_struct *wq; |
1113 | int ret = NOTIFY_OK; | 1113 | int err = 0; |
1114 | 1114 | ||
1115 | action &= ~CPU_TASKS_FROZEN; | 1115 | action &= ~CPU_TASKS_FROZEN; |
1116 | 1116 | ||
@@ -1124,12 +1124,13 @@ undo: | |||
1124 | 1124 | ||
1125 | switch (action) { | 1125 | switch (action) { |
1126 | case CPU_UP_PREPARE: | 1126 | case CPU_UP_PREPARE: |
1127 | if (!create_workqueue_thread(cwq, cpu)) | 1127 | err = create_workqueue_thread(cwq, cpu); |
1128 | if (!err) | ||
1128 | break; | 1129 | break; |
1129 | printk(KERN_ERR "workqueue [%s] for %i failed\n", | 1130 | printk(KERN_ERR "workqueue [%s] for %i failed\n", |
1130 | wq->name, cpu); | 1131 | wq->name, cpu); |
1131 | action = CPU_UP_CANCELED; | 1132 | action = CPU_UP_CANCELED; |
1132 | ret = NOTIFY_BAD; | 1133 | err = -ENOMEM; |
1133 | goto undo; | 1134 | goto undo; |
1134 | 1135 | ||
1135 | case CPU_ONLINE: | 1136 | case CPU_ONLINE: |
@@ -1150,7 +1151,7 @@ undo: | |||
1150 | cpumask_clear_cpu(cpu, cpu_populated_map); | 1151 | cpumask_clear_cpu(cpu, cpu_populated_map); |
1151 | } | 1152 | } |
1152 | 1153 | ||
1153 | return ret; | 1154 | return notifier_from_errno(err); |
1154 | } | 1155 | } |
1155 | 1156 | ||
1156 | #ifdef CONFIG_SMP | 1157 | #ifdef CONFIG_SMP |