diff options
author | Chen Gang <gang.chen@asianux.com> | 2013-08-22 02:43:37 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2013-08-29 00:37:59 -0400 |
commit | 9c823f9f7e4b392921d0d8b251bec080d58f9077 (patch) | |
tree | 2ec4cdd213f1268f088c706eadd3d95e911976d8 /kernel/padata.c | |
parent | a246968edcfcfe0503fa9bcd5a444e7a5b9986dc (diff) |
padata - share code between CPU_ONLINE and CPU_DOWN_FAILED, same to CPU_DOWN_PREPARE and CPU_UP_CANCELED
Share code between CPU_ONLINE and CPU_DOWN_FAILED, same to
CPU_DOWN_PREPARE and CPU_UP_CANCELED.
It will fix 2 bugs:
"not check the return value of __padata_remove_cpu() and __padata_add_cpu()".
"need add 'break' between CPU_UP_CANCELED and CPU_DOWN_FAILED".
Signed-off-by: Chen Gang <gang.chen@asianux.com>
Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'kernel/padata.c')
-rw-r--r-- | kernel/padata.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/kernel/padata.c b/kernel/padata.c index 072f4ee4eb89..2f0037a86289 100644 --- a/kernel/padata.c +++ b/kernel/padata.c | |||
@@ -846,6 +846,8 @@ static int padata_cpu_callback(struct notifier_block *nfb, | |||
846 | switch (action) { | 846 | switch (action) { |
847 | case CPU_ONLINE: | 847 | case CPU_ONLINE: |
848 | case CPU_ONLINE_FROZEN: | 848 | case CPU_ONLINE_FROZEN: |
849 | case CPU_DOWN_FAILED: | ||
850 | case CPU_DOWN_FAILED_FROZEN: | ||
849 | if (!pinst_has_cpu(pinst, cpu)) | 851 | if (!pinst_has_cpu(pinst, cpu)) |
850 | break; | 852 | break; |
851 | mutex_lock(&pinst->lock); | 853 | mutex_lock(&pinst->lock); |
@@ -857,6 +859,8 @@ static int padata_cpu_callback(struct notifier_block *nfb, | |||
857 | 859 | ||
858 | case CPU_DOWN_PREPARE: | 860 | case CPU_DOWN_PREPARE: |
859 | case CPU_DOWN_PREPARE_FROZEN: | 861 | case CPU_DOWN_PREPARE_FROZEN: |
862 | case CPU_UP_CANCELED: | ||
863 | case CPU_UP_CANCELED_FROZEN: | ||
860 | if (!pinst_has_cpu(pinst, cpu)) | 864 | if (!pinst_has_cpu(pinst, cpu)) |
861 | break; | 865 | break; |
862 | mutex_lock(&pinst->lock); | 866 | mutex_lock(&pinst->lock); |
@@ -865,22 +869,6 @@ static int padata_cpu_callback(struct notifier_block *nfb, | |||
865 | if (err) | 869 | if (err) |
866 | return notifier_from_errno(err); | 870 | return notifier_from_errno(err); |
867 | break; | 871 | break; |
868 | |||
869 | case CPU_UP_CANCELED: | ||
870 | case CPU_UP_CANCELED_FROZEN: | ||
871 | if (!pinst_has_cpu(pinst, cpu)) | ||
872 | break; | ||
873 | mutex_lock(&pinst->lock); | ||
874 | __padata_remove_cpu(pinst, cpu); | ||
875 | mutex_unlock(&pinst->lock); | ||
876 | |||
877 | case CPU_DOWN_FAILED: | ||
878 | case CPU_DOWN_FAILED_FROZEN: | ||
879 | if (!pinst_has_cpu(pinst, cpu)) | ||
880 | break; | ||
881 | mutex_lock(&pinst->lock); | ||
882 | __padata_add_cpu(pinst, cpu); | ||
883 | mutex_unlock(&pinst->lock); | ||
884 | } | 872 | } |
885 | 873 | ||
886 | return NOTIFY_OK; | 874 | return NOTIFY_OK; |