Skip to content

Commit e578960

Browse files
Peter Ujfalusistorulf
authored andcommitted
mmc: omap_hsmmc: Initialize dma_slave_config to avoid random data
It is wrong to use uninitialized dma_slave_config and configure only certain fields as the DMAengine driver might look at non initialized (random data) fields and tries to interpret it. Signed-off-by: Peter Ujfalusi <[email protected]> Signed-off-by: Ulf Hansson <[email protected]>
1 parent 3ae50f4 commit e578960

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

drivers/mmc/host/omap_hsmmc.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,11 +1409,18 @@ static int omap_hsmmc_pre_dma_transfer(struct omap_hsmmc_host *host,
14091409
static int omap_hsmmc_setup_dma_transfer(struct omap_hsmmc_host *host,
14101410
struct mmc_request *req)
14111411
{
1412-
struct dma_slave_config cfg;
14131412
struct dma_async_tx_descriptor *tx;
14141413
int ret = 0, i;
14151414
struct mmc_data *data = req->data;
14161415
struct dma_chan *chan;
1416+
struct dma_slave_config cfg = {
1417+
.src_addr = host->mapbase + OMAP_HSMMC_DATA,
1418+
.dst_addr = host->mapbase + OMAP_HSMMC_DATA,
1419+
.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES,
1420+
.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES,
1421+
.src_maxburst = data->blksz / 4,
1422+
.dst_maxburst = data->blksz / 4,
1423+
};
14171424

14181425
/* Sanity check: all the SG entries must be aligned by block size. */
14191426
for (i = 0; i < data->sg_len; i++) {
@@ -1433,13 +1440,6 @@ static int omap_hsmmc_setup_dma_transfer(struct omap_hsmmc_host *host,
14331440

14341441
chan = omap_hsmmc_get_dma_chan(host, data);
14351442

1436-
cfg.src_addr = host->mapbase + OMAP_HSMMC_DATA;
1437-
cfg.dst_addr = host->mapbase + OMAP_HSMMC_DATA;
1438-
cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
1439-
cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
1440-
cfg.src_maxburst = data->blksz / 4;
1441-
cfg.dst_maxburst = data->blksz / 4;
1442-
14431443
ret = dmaengine_slave_config(chan, &cfg);
14441444
if (ret)
14451445
return ret;

0 commit comments

Comments
 (0)