X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=kernel%2Fpadata.c;h=f1aef1639204714843bcee2134cf85f8f6d39434;hb=f14180d091364aeb1473123614327452e3a2a1cb;hp=05316c9f32da9d0e20b3d3c92eeaf3eb49f1deef;hpb=e93b1cc8a8965da137ffea0b88e5f62fa1d2a9e6;p=mirror_ubuntu-zesty-kernel.git diff --git a/kernel/padata.c b/kernel/padata.c index 05316c9f32da..f1aef1639204 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); @@ -353,7 +354,7 @@ static int padata_setup_cpumasks(struct parallel_data *pd, cpumask_and(pd->cpumask.pcpu, pcpumask, cpu_online_mask); if (!alloc_cpumask_var(&pd->cpumask.cbcpu, GFP_KERNEL)) { - free_cpumask_var(pd->cpumask.cbcpu); + free_cpumask_var(pd->cpumask.pcpu); return -ENOMEM; }