diff mbox series

[1/3] mmc: sdhci: Fix issue with uninitialized dma_slave_config

Message ID 20210810081644.19353-1-tony@atomide.com (mailing list archive)
State New, archived
Headers show
Series [1/3] mmc: sdhci: Fix issue with uninitialized dma_slave_config | expand

Commit Message

Tony Lindgren Aug. 10, 2021, 8:16 a.m. UTC
Depending on the DMA driver being used, the struct dma_slave_config may
need to be initialized to zero for the unused data.

For example, we have three DMA drivers using src_port_window_size and
dst_port_window_size. If these are left uninitialized, it can cause DMA
failures at least if external TI SDMA is ever configured for sdhci.

For other external DMA cases, this is probably not currently an issue but
is still good to fix though.

Fixes: 18e762e3b7a7 ("mmc: sdhci: add support for using external DMA devices")
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Chunyan Zhang <zhang.chunyan@linaro.org>
Cc: Faiz Abbas <faiz_abbas@ti.com>
Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Cc: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/mmc/host/sdhci.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Adrian Hunter Aug. 10, 2021, 8:24 a.m. UTC | #1
On 10/08/21 11:16 am, Tony Lindgren wrote:
> Depending on the DMA driver being used, the struct dma_slave_config may
> need to be initialized to zero for the unused data.
> 
> For example, we have three DMA drivers using src_port_window_size and
> dst_port_window_size. If these are left uninitialized, it can cause DMA
> failures at least if external TI SDMA is ever configured for sdhci.
> 
> For other external DMA cases, this is probably not currently an issue but
> is still good to fix though.
> 
> Fixes: 18e762e3b7a7 ("mmc: sdhci: add support for using external DMA devices")
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Chunyan Zhang <zhang.chunyan@linaro.org>
> Cc: Faiz Abbas <faiz_abbas@ti.com>
> Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
> Cc: Vinod Koul <vkoul@kernel.org>
> Signed-off-by: Tony Lindgren <tony@atomide.com>

Acked-by: Adrian Hunter <adrian.hunter@intel.com>

> ---
>  drivers/mmc/host/sdhci.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1222,6 +1222,7 @@ static int sdhci_external_dma_setup(struct sdhci_host *host,
>  	if (!host->mapbase)
>  		return -EINVAL;
>  
> +	memset(&cfg, 0, sizeof(cfg));
>  	cfg.src_addr = host->mapbase + SDHCI_BUFFER;
>  	cfg.dst_addr = host->mapbase + SDHCI_BUFFER;
>  	cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
>
Péter Ujfalusi Aug. 10, 2021, 8:31 a.m. UTC | #2
On 10/08/2021 11:16, Tony Lindgren wrote:
> Depending on the DMA driver being used, the struct dma_slave_config may
> need to be initialized to zero for the unused data.
> 
> For example, we have three DMA drivers using src_port_window_size and
> dst_port_window_size. If these are left uninitialized, it can cause DMA
> failures at least if external TI SDMA is ever configured for sdhci.
> 
> For other external DMA cases, this is probably not currently an issue but
> is still good to fix though.

Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>

> Fixes: 18e762e3b7a7 ("mmc: sdhci: add support for using external DMA devices")
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Chunyan Zhang <zhang.chunyan@linaro.org>
> Cc: Faiz Abbas <faiz_abbas@ti.com>
> Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
> Cc: Vinod Koul <vkoul@kernel.org>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  drivers/mmc/host/sdhci.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1222,6 +1222,7 @@ static int sdhci_external_dma_setup(struct sdhci_host *host,
>  	if (!host->mapbase)
>  		return -EINVAL;
>  
> +	memset(&cfg, 0, sizeof(cfg));
>  	cfg.src_addr = host->mapbase + SDHCI_BUFFER;
>  	cfg.dst_addr = host->mapbase + SDHCI_BUFFER;
>  	cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
>
Ulf Hansson Aug. 16, 2021, 1:59 p.m. UTC | #3
On Tue, 10 Aug 2021 at 10:16, Tony Lindgren <tony@atomide.com> wrote:
>
> Depending on the DMA driver being used, the struct dma_slave_config may
> need to be initialized to zero for the unused data.
>
> For example, we have three DMA drivers using src_port_window_size and
> dst_port_window_size. If these are left uninitialized, it can cause DMA
> failures at least if external TI SDMA is ever configured for sdhci.
>
> For other external DMA cases, this is probably not currently an issue but
> is still good to fix though.
>
> Fixes: 18e762e3b7a7 ("mmc: sdhci: add support for using external DMA devices")
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Chunyan Zhang <zhang.chunyan@linaro.org>
> Cc: Faiz Abbas <faiz_abbas@ti.com>
> Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
> Cc: Vinod Koul <vkoul@kernel.org>
> Signed-off-by: Tony Lindgren <tony@atomide.com>

Applied for next, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/host/sdhci.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1222,6 +1222,7 @@ static int sdhci_external_dma_setup(struct sdhci_host *host,
>         if (!host->mapbase)
>                 return -EINVAL;
>
> +       memset(&cfg, 0, sizeof(cfg));
>         cfg.src_addr = host->mapbase + SDHCI_BUFFER;
>         cfg.dst_addr = host->mapbase + SDHCI_BUFFER;
>         cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
> --
> 2.32.0
diff mbox series

Patch

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1222,6 +1222,7 @@  static int sdhci_external_dma_setup(struct sdhci_host *host,
 	if (!host->mapbase)
 		return -EINVAL;
 
+	memset(&cfg, 0, sizeof(cfg));
 	cfg.src_addr = host->mapbase + SDHCI_BUFFER;
 	cfg.dst_addr = host->mapbase + SDHCI_BUFFER;
 	cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;