Commit 94fbe6c9 authored by George Hilliard's avatar George Hilliard Committed by Greg Kroah-Hartman

staging: mt7621-mmc: Check for nonzero number of scatterlist entries

[ Upstream commit d4223e06 ]

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: default avatarGeorge Hilliard <thirtythreeforty@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 5a27284c
......@@ -596,8 +596,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;
......@@ -692,6 +690,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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment