diff options
Diffstat (limited to 'kernel/smpboot.c')
-rw-r--r-- | kernel/smpboot.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/smpboot.c b/kernel/smpboot.c index d6c5fc054242..d4abac261779 100644 --- a/kernel/smpboot.c +++ b/kernel/smpboot.c | |||
@@ -183,9 +183,10 @@ __smpboot_create_thread(struct smp_hotplug_thread *ht, unsigned int cpu) | |||
183 | kfree(td); | 183 | kfree(td); |
184 | return PTR_ERR(tsk); | 184 | return PTR_ERR(tsk); |
185 | } | 185 | } |
186 | |||
187 | get_task_struct(tsk); | 186 | get_task_struct(tsk); |
188 | *per_cpu_ptr(ht->store, cpu) = tsk; | 187 | *per_cpu_ptr(ht->store, cpu) = tsk; |
188 | if (ht->create) | ||
189 | ht->create(cpu); | ||
189 | return 0; | 190 | return 0; |
190 | } | 191 | } |
191 | 192 | ||
@@ -225,7 +226,7 @@ static void smpboot_park_thread(struct smp_hotplug_thread *ht, unsigned int cpu) | |||
225 | { | 226 | { |
226 | struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu); | 227 | struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu); |
227 | 228 | ||
228 | if (tsk) | 229 | if (tsk && !ht->selfparking) |
229 | kthread_park(tsk); | 230 | kthread_park(tsk); |
230 | } | 231 | } |
231 | 232 | ||