Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 111db609 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "mmc: block: Fix invalid data from freed request pointer"

parents 4025936a 334aa263
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -2981,6 +2981,8 @@ static void mmc_blk_cmdq_err(struct mmc_queue *mq)
	struct mmc_request *mrq = host->err_mrq;
	struct mmc_card *card = mq->card;
	struct mmc_cmdq_context_info *ctx_info = &host->cmdq_ctx;
	struct request_queue *q = mrq->req->q;
	int tag = mrq->req->tag;

	pm_runtime_get_sync(&card->dev);
	mmc_host_clk_hold(host);
@@ -3021,13 +3023,13 @@ static void mmc_blk_cmdq_err(struct mmc_queue *mq)
					 mrq->req, &gen_err, &status);
			if (err) {
				pr_err("%s: error %d sending stop (%d) command\n",
					mrq->req->rq_disk->disk_name,
					mmc_hostname(host),
					err, status);
				goto reset;
			}
		}

		if (mmc_cmdq_discard_queue(host, mrq->req->tag))
		if (mmc_cmdq_discard_queue(host, tag))
			goto reset;
		else
			goto unhalt;
@@ -3049,7 +3051,7 @@ static void mmc_blk_cmdq_err(struct mmc_queue *mq)

reset:
	spin_lock_irq(mq->queue->queue_lock);
	blk_queue_invalidate_tags(mrq->req->q);
	blk_queue_invalidate_tags(q);
	spin_unlock_irq(mq->queue->queue_lock);
	mmc_blk_cmdq_reset(host, true);
	goto out;