drm/edid/firmware: Add built-in edid/1280x720.bin firmware
[platform/kernel/linux-starfive.git] / kernel / padata.c
index e5819bb..de90af5 100644 (file)
@@ -207,14 +207,16 @@ int padata_do_parallel(struct padata_shell *ps,
        pw = padata_work_alloc();
        spin_unlock(&padata_works_lock);
 
+       if (!pw) {
+               /* Maximum works limit exceeded, run in the current task. */
+               padata->parallel(padata);
+       }
+
        rcu_read_unlock_bh();
 
        if (pw) {
                padata_work_init(pw, padata_parallel_worker, padata, 0);
                queue_work(pinst->parallel_wq, &pw->pw_work);
-       } else {
-               /* Maximum works limit exceeded, run in the current task. */
-               padata->parallel(padata);
        }
 
        return 0;
@@ -388,13 +390,16 @@ void padata_do_serial(struct padata_priv *padata)
        int hashed_cpu = padata_cpu_hash(pd, padata->seq_nr);
        struct padata_list *reorder = per_cpu_ptr(pd->reorder_list, hashed_cpu);
        struct padata_priv *cur;
+       struct list_head *pos;
 
        spin_lock(&reorder->lock);
        /* Sort in ascending order of sequence number. */
-       list_for_each_entry_reverse(cur, &reorder->list, list)
+       list_for_each_prev(pos, &reorder->list) {
+               cur = list_entry(pos, struct padata_priv, list);
                if (cur->seq_nr < padata->seq_nr)
                        break;
-       list_add(&padata->list, &cur->list);
+       }
+       list_add(&padata->list, pos);
        spin_unlock(&reorder->lock);
 
        /*