diff options
-rw-r--r-- | kernel/padata.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/padata.c b/kernel/padata.c index 05316c9f32da..3202aa17492c 100644 --- a/kernel/padata.c +++ b/kernel/padata.c | |||
@@ -186,19 +186,20 @@ static struct padata_priv *padata_get_next(struct parallel_data *pd) | |||
186 | 186 | ||
187 | reorder = &next_queue->reorder; | 187 | reorder = &next_queue->reorder; |
188 | 188 | ||
189 | spin_lock(&reorder->lock); | ||
189 | if (!list_empty(&reorder->list)) { | 190 | if (!list_empty(&reorder->list)) { |
190 | padata = list_entry(reorder->list.next, | 191 | padata = list_entry(reorder->list.next, |
191 | struct padata_priv, list); | 192 | struct padata_priv, list); |
192 | 193 | ||
193 | spin_lock(&reorder->lock); | ||
194 | list_del_init(&padata->list); | 194 | list_del_init(&padata->list); |
195 | atomic_dec(&pd->reorder_objects); | 195 | atomic_dec(&pd->reorder_objects); |
196 | spin_unlock(&reorder->lock); | ||
197 | 196 | ||
198 | pd->processed++; | 197 | pd->processed++; |
199 | 198 | ||
199 | spin_unlock(&reorder->lock); | ||
200 | goto out; | 200 | goto out; |
201 | } | 201 | } |
202 | spin_unlock(&reorder->lock); | ||
202 | 203 | ||
203 | if (__this_cpu_read(pd->pqueue->cpu_index) == next_queue->cpu_index) { | 204 | if (__this_cpu_read(pd->pqueue->cpu_index) == next_queue->cpu_index) { |
204 | padata = ERR_PTR(-ENODATA); | 205 | padata = ERR_PTR(-ENODATA); |