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 | |
| 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')
| -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; |
