Merge tag 'regulator-v4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[firefly-linux-kernel-4.4.55.git] / drivers / mmc / card / queue.c
index 8efa3684aef849174ccef4053e049e3c95d8646f..b5a2b145d89f6b32c42c67e25cc029c1ef6744ea 100644 (file)
@@ -56,7 +56,6 @@ static int mmc_queue_thread(void *d)
        down(&mq->thread_sem);
        do {
                struct request *req = NULL;
-               struct mmc_queue_req *tmp;
                unsigned int cmd_flags = 0;
 
                spin_lock_irq(q->queue_lock);
@@ -69,6 +68,7 @@ static int mmc_queue_thread(void *d)
                        set_current_state(TASK_RUNNING);
                        cmd_flags = req ? req->cmd_flags : 0;
                        mq->issue_fn(mq, req);
+                       cond_resched();
                        if (mq->flags & MMC_QUEUE_NEW_REQUEST) {
                                mq->flags &= ~MMC_QUEUE_NEW_REQUEST;
                                continue; /* fetch again */
@@ -86,9 +86,7 @@ static int mmc_queue_thread(void *d)
 
                        mq->mqrq_prev->brq.mrq.data = NULL;
                        mq->mqrq_prev->req = NULL;
-                       tmp = mq->mqrq_prev;
-                       mq->mqrq_prev = mq->mqrq_cur;
-                       mq->mqrq_cur = tmp;
+                       swap(mq->mqrq_prev, mq->mqrq_cur);
                } else {
                        if (kthread_should_stop()) {
                                set_current_state(TASK_RUNNING);