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

Commit 8b7feff8 authored by Pierre Ossman's avatar Pierre Ossman
Browse files

mmc: correct request error handling



We need to jump to the part of just flushing the request
when we cannot claim the bus. Sending commands to a bus
we do not own will give unpredictable results.

Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent 89b4e133
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -224,10 +224,10 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
	struct mmc_blk_data *md = mq->data;
	struct mmc_card *card = md->queue.card;
	struct mmc_blk_request brq;
	int ret;
	int ret = 1;

	if (mmc_card_claim_host(card))
		goto cmd_err;
		goto flush_queue;

	do {
		struct mmc_command cmd;
@@ -344,8 +344,6 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
	return 1;

 cmd_err:
	ret = 1;

 	/*
 	 * If this is an SD card and we're writing, we can first
 	 * mark the known good sectors as ok.
@@ -379,6 +377,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)

	mmc_card_release_host(card);

flush_queue:
	spin_lock_irq(&md->lock);
	while (ret) {
		ret = end_that_request_chunk(req, 0,