* @mq: the queue with the card and host to restart
  * @req: a new request that want to be started after the current one
  */
-static void mmc_blk_rw_try_restart(struct mmc_queue *mq, struct request *req)
+static void mmc_blk_rw_try_restart(struct mmc_queue *mq, struct request *req,
+                                  struct mmc_queue_req *mqrq)
 {
        if (!req)
                return;
                return;
        }
        /* Else proceed and try to restart the current async request */
-       mmc_blk_rw_rq_prep(mq->mqrq_cur, mq->card, 0, mq);
-       mmc_start_areq(mq->card->host, &mq->mqrq_cur->areq, NULL);
+       mmc_blk_rw_rq_prep(mqrq, mq->card, 0, mq);
+       mmc_start_areq(mq->card->host, &mqrq->areq, NULL);
 }
 
 static void mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *new_req)
        struct mmc_blk_request *brq;
        int disable_multi = 0, retry = 0, type, retune_retry_done = 0;
        enum mmc_blk_status status;
+       struct mmc_queue_req *mqrq_cur = mq->mqrq_cur;
        struct mmc_queue_req *mq_rq;
        struct request *old_req;
        struct mmc_async_req *new_areq;
                                return;
                        }
 
-                       mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq);
-                       new_areq = &mq->mqrq_cur->areq;
+                       mmc_blk_rw_rq_prep(mqrq_cur, card, 0, mq);
+                       new_areq = &mqrq_cur->areq;
                } else
                        new_areq = NULL;
 
                        if (mmc_blk_reset(md, card->host, type)) {
                                if (req_pending)
                                        mmc_blk_rw_cmd_abort(card, old_req);
-                               mmc_blk_rw_try_restart(mq, new_req);
+                               mmc_blk_rw_try_restart(mq, new_req, mqrq_cur);
                                return;
                        }
                        if (!req_pending) {
-                               mmc_blk_rw_try_restart(mq, new_req);
+                               mmc_blk_rw_try_restart(mq, new_req, mqrq_cur);
                                return;
                        }
                        break;
                        if (!mmc_blk_reset(md, card->host, type))
                                break;
                        mmc_blk_rw_cmd_abort(card, old_req);
-                       mmc_blk_rw_try_restart(mq, new_req);
+                       mmc_blk_rw_try_restart(mq, new_req, mqrq_cur);
                        return;
                case MMC_BLK_DATA_ERR: {
                        int err;
                                break;
                        if (err == -ENODEV) {
                                mmc_blk_rw_cmd_abort(card, old_req);
-                               mmc_blk_rw_try_restart(mq, new_req);
+                               mmc_blk_rw_try_restart(mq, new_req, mqrq_cur);
                                return;
                        }
                        /* Fall through */
                        req_pending = blk_end_request(old_req, -EIO,
                                                      brq->data.blksz);
                        if (!req_pending) {
-                               mmc_blk_rw_try_restart(mq, new_req);
+                               mmc_blk_rw_try_restart(mq, new_req, mqrq_cur);
                                return;
                        }
                        break;
                case MMC_BLK_NOMEDIUM:
                        mmc_blk_rw_cmd_abort(card, old_req);
-                       mmc_blk_rw_try_restart(mq, new_req);
+                       mmc_blk_rw_try_restart(mq, new_req, mqrq_cur);
                        return;
                default:
                        pr_err("%s: Unhandled return value (%d)",
                                        old_req->rq_disk->disk_name, status);
                        mmc_blk_rw_cmd_abort(card, old_req);
-                       mmc_blk_rw_try_restart(mq, new_req);
+                       mmc_blk_rw_try_restart(mq, new_req, mqrq_cur);
                        return;
                }