| .. | .. |
|---|
| 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 | /* |
|---|