diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index fc031712427646b4235d5f199fce92c3b7d8f22a..c9c3d20b784b669bf130cffb716b8525470738fa 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -1920,9 +1920,11 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *rqc) break; case MMC_BLK_CMD_ERR: ret = mmc_blk_cmd_err(md, card, brq, req, ret); - if (!mmc_blk_reset(md, card->host, type)) - break; - goto cmd_abort; + if (mmc_blk_reset(md, card->host, type)) + goto cmd_abort; + if (!ret) + goto start_new_req; + break; case MMC_BLK_RETRY: retune_retry_done = brq->retune_retry_done; if (retry++ < 5)