[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190319022012.11051-12-thirtythreeforty@gmail.com>
Date: Mon, 18 Mar 2019 20:20:12 -0600
From: George Hilliard <thirtythreeforty@...il.com>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: linux-mips@...ux-mips.org, linux-kernel@...r.kernel.org,
George Hilliard <thirtythreeforty@...il.com>
Subject: [PATCH v2 11/11] staging: mt7621-mmc: Only unmap_sg if mapped
A failure while processing the start command could cause dma_unmap_sg()
to be called without first calling dma_map_sg().
Since calling dma_unmap_sg() is only needed when data != NULL, move the
unmap call into the corresponding if {} block.
Signed-off-by: George Hilliard <thirtythreeforty@...il.com>
---
drivers/staging/mt7621-mmc/sd.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/mt7621-mmc/sd.c b/drivers/staging/mt7621-mmc/sd.c
index b52e0284ea8e..f14ff75cc4b7 100644
--- a/drivers/staging/mt7621-mmc/sd.c
+++ b/drivers/staging/mt7621-mmc/sd.c
@@ -695,7 +695,7 @@ static int msdc_do_request(struct mmc_host *mmc, struct mmc_request *mrq)
/* then wait command done */
if (msdc_command_resp(host, cmd, 1, CMD_TIMEOUT) != 0)
- goto done;
+ goto unmap;
/* for read, the data coming too fast, then CRC error
* start DMA no business with CRC.
@@ -732,18 +732,17 @@ static int msdc_do_request(struct mmc_host *mmc, struct mmc_request *mrq)
/* Last: stop transfer */
if (data->stop) {
if (msdc_do_command(host, data->stop, 0, CMD_TIMEOUT) != 0)
- goto done;
+ goto unmap;
}
- }
-done:
- if (data) {
+unmap:
host->data = NULL;
dma_unmap_sg(mmc_dev(mmc), data->sg, data->sg_len,
mmc_get_dma_dir(data));
host->blksz = 0;
}
+done:
if (mrq->cmd->error)
host->error = 0x001;
if (mrq->data && mrq->data->error)
--
2.21.0
Powered by blists - more mailing lists