diff options
Diffstat (limited to 'kernel/padata.c')
| -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)  	reorder = &next_queue->reorder; +	spin_lock(&reorder->lock);  	if (!list_empty(&reorder->list)) {  		padata = list_entry(reorder->list.next,  				    struct padata_priv, list); -		spin_lock(&reorder->lock);  		list_del_init(&padata->list);  		atomic_dec(&pd->reorder_objects); -		spin_unlock(&reorder->lock);  		pd->processed++; +		spin_unlock(&reorder->lock);  		goto out;  	} +	spin_unlock(&reorder->lock);  	if (__this_cpu_read(pd->pqueue->cpu_index) == next_queue->cpu_index) {  		padata = ERR_PTR(-ENODATA);  | 
