diff options
Diffstat (limited to 'drivers/mmc/core/queue.c')
| -rw-r--r-- | drivers/mmc/core/queue.c | 16 | 
1 files changed, 5 insertions, 11 deletions
| diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index 25bee3daf9e2..4b1eb89b401d 100644 --- a/drivers/mmc/core/queue.c +++ b/drivers/mmc/core/queue.c @@ -107,11 +107,10 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req)  	case MMC_ISSUE_DCMD:  		if (host->cqe_ops->cqe_timeout(host, mrq, &recovery_needed)) {  			if (recovery_needed) -				__mmc_cqe_recovery_notifier(mq); +				mmc_cqe_recovery_notifier(mrq);  			return BLK_EH_RESET_TIMER;  		} -		/* No timeout (XXX: huh? comment doesn't make much sense) */ -		blk_mq_complete_request(req); +		/* The request has gone already */  		return BLK_EH_DONE;  	default:  		/* Timeout is handled by mmc core */ @@ -127,18 +126,13 @@ static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req,  	struct mmc_card *card = mq->card;  	struct mmc_host *host = card->host;  	unsigned long flags; -	int ret; +	bool ignore_tout;  	spin_lock_irqsave(&mq->lock, flags); - -	if (mq->recovery_needed || !mq->use_cqe || host->hsq_enabled) -		ret = BLK_EH_RESET_TIMER; -	else -		ret = mmc_cqe_timed_out(req); - +	ignore_tout = mq->recovery_needed || !mq->use_cqe || host->hsq_enabled;  	spin_unlock_irqrestore(&mq->lock, flags); -	return ret; +	return ignore_tout ? BLK_EH_RESET_TIMER : mmc_cqe_timed_out(req);  }  static void mmc_mq_recovery_handler(struct work_struct *work) |