aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/card/queue.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc/card/queue.c')
-rw-r--r--drivers/mmc/card/queue.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index e360a979857d..fadf52eb5d70 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -68,6 +68,16 @@ static int mmc_queue_thread(void *d)
68 if (req || mq->mqrq_prev->req) { 68 if (req || mq->mqrq_prev->req) {
69 set_current_state(TASK_RUNNING); 69 set_current_state(TASK_RUNNING);
70 mq->issue_fn(mq, req); 70 mq->issue_fn(mq, req);
71
72 /*
73 * Current request becomes previous request
74 * and vice versa.
75 */
76 mq->mqrq_prev->brq.mrq.data = NULL;
77 mq->mqrq_prev->req = NULL;
78 tmp = mq->mqrq_prev;
79 mq->mqrq_prev = mq->mqrq_cur;
80 mq->mqrq_cur = tmp;
71 } else { 81 } else {
72 if (kthread_should_stop()) { 82 if (kthread_should_stop()) {
73 set_current_state(TASK_RUNNING); 83 set_current_state(TASK_RUNNING);
@@ -77,13 +87,6 @@ static int mmc_queue_thread(void *d)
77 schedule(); 87 schedule();
78 down(&mq->thread_sem); 88 down(&mq->thread_sem);
79 } 89 }
80
81 /* Current request becomes previous request and vice versa. */
82 mq->mqrq_prev->brq.mrq.data = NULL;
83 mq->mqrq_prev->req = NULL;
84 tmp = mq->mqrq_prev;
85 mq->mqrq_prev = mq->mqrq_cur;
86 mq->mqrq_cur = tmp;
87 } while (1); 90 } while (1);
88 up(&mq->thread_sem); 91 up(&mq->thread_sem);
89 92