summaryrefslogtreecommitdiff
path: root/drivers/staging/mt7621-mmc
diff options
context:
space:
mode:
authorGeorge Hilliard <thirtythreeforty@gmail.com>2019-03-20 16:42:05 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-03-22 15:20:27 +0100
commitd4223e06b6aed581625f574ad8faa71b6c0fc903 (patch)
tree9aca063aaf039002068227fad2d08ba1a024c363 /drivers/staging/mt7621-mmc
parentf2778bb3cb6c7544578c45688f3d5bcb09e0ac87 (diff)
downloadlinux-d4223e06b6aed581625f574ad8faa71b6c0fc903.tar.gz
linux-d4223e06b6aed581625f574ad8faa71b6c0fc903.tar.bz2
linux-d4223e06b6aed581625f574ad8faa71b6c0fc903.zip
staging: mt7621-mmc: Check for nonzero number of scatterlist entries
The buffer descriptor setup loop is correct only if it is setting up at least one bd struct. Besides, there is an error if dma_map_sg() returns 0, which is possible and must be handled. Additionally, remove the BUG_ON() checking sglen, which is unnecessary because we configure DMA with that constraint during init. Signed-off-by: George Hilliard <thirtythreeforty@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/mt7621-mmc')
-rw-r--r--drivers/staging/mt7621-mmc/sd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/staging/mt7621-mmc/sd.c b/drivers/staging/mt7621-mmc/sd.c
index ff01872ab972..e346167754bd 100644
--- a/drivers/staging/mt7621-mmc/sd.c
+++ b/drivers/staging/mt7621-mmc/sd.c
@@ -591,8 +591,6 @@ static void msdc_dma_setup(struct msdc_host *host, struct msdc_dma *dma,
struct bd *bd;
u32 j;
- BUG_ON(sglen > MAX_BD_NUM); /* not support currently */
-
gpd = dma->gpd;
bd = dma->bd;
@@ -681,6 +679,13 @@ static int msdc_do_request(struct mmc_host *mmc, struct mmc_request *mrq)
data->sg_count = dma_map_sg(mmc_dev(mmc), data->sg,
data->sg_len,
mmc_get_dma_dir(data));
+
+ if (data->sg_count == 0) {
+ dev_err(mmc_dev(host->mmc), "failed to map DMA for transfer\n");
+ data->error = -ENOMEM;
+ goto done;
+ }
+
msdc_dma_setup(host, &host->dma, data->sg,
data->sg_count);