.. | .. |
---|
220 | 220 | pw = padata_work_alloc(); |
---|
221 | 221 | spin_unlock(&padata_works_lock); |
---|
222 | 222 | |
---|
| 223 | + if (!pw) { |
---|
| 224 | + /* Maximum works limit exceeded, run in the current task. */ |
---|
| 225 | + padata->parallel(padata); |
---|
| 226 | + } |
---|
| 227 | + |
---|
223 | 228 | rcu_read_unlock_bh(); |
---|
224 | 229 | |
---|
225 | 230 | if (pw) { |
---|
226 | 231 | padata_work_init(pw, padata_parallel_worker, padata, 0); |
---|
227 | 232 | queue_work(pinst->parallel_wq, &pw->pw_work); |
---|
228 | | - } else { |
---|
229 | | - /* Maximum works limit exceeded, run in the current task. */ |
---|
230 | | - padata->parallel(padata); |
---|
231 | 233 | } |
---|
232 | 234 | |
---|
233 | 235 | return 0; |
---|
.. | .. |
---|
401 | 403 | int hashed_cpu = padata_cpu_hash(pd, padata->seq_nr); |
---|
402 | 404 | struct padata_list *reorder = per_cpu_ptr(pd->reorder_list, hashed_cpu); |
---|
403 | 405 | struct padata_priv *cur; |
---|
| 406 | + struct list_head *pos; |
---|
404 | 407 | |
---|
405 | 408 | spin_lock(&reorder->lock); |
---|
406 | 409 | /* Sort in ascending order of sequence number. */ |
---|
407 | | - list_for_each_entry_reverse(cur, &reorder->list, list) |
---|
| 410 | + list_for_each_prev(pos, &reorder->list) { |
---|
| 411 | + cur = list_entry(pos, struct padata_priv, list); |
---|
408 | 412 | if (cur->seq_nr < padata->seq_nr) |
---|
409 | 413 | break; |
---|
410 | | - list_add(&padata->list, &cur->list); |
---|
| 414 | + } |
---|
| 415 | + list_add(&padata->list, pos); |
---|
411 | 416 | spin_unlock(&reorder->lock); |
---|
412 | 417 | |
---|
413 | 418 | /* |
---|