Re: [PATCH] mmc: tmio_mmc_dma: don't print invalid DMA cookie

From: Ulf Hansson
Date: Thu Jan 14 2016 - 05:02:40 EST


On 13 January 2016 at 22:25, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> The tmio_mmc_start_dma_{rx,tx} function functions contain debug
> code that prints the dma cookie among other things. However,
> in case we fall back to PIO mode for some reason, the cookie
> variable is never initialized, and gcc warns about this:
>
> In file included from ../include/linux/printk.h:277:0,
> from ../include/linux/kernel.h:13,
> from ../include/linux/list.h:8,
> from ../include/linux/kobject.h:20,
> from ../include/linux/device.h:17,
> from ../drivers/mmc/host/tmio_mmc_dma.c:13:
> ../drivers/mmc/host/tmio_mmc_dma.c: In function 'tmio_mmc_start_dma':
> ../include/linux/dynamic_debug.h:86:3: warning: 'cookie' may be used uninitialized in this function [-Wmaybe-uninitialized]
> __dynamic_dev_dbg(&descriptor, dev, fmt, \
> ^
> ../drivers/mmc/host/tmio_mmc_dma.c:128:15: note: 'cookie' was declared here
> dma_cookie_t cookie;
>
> This modifies the dev_dbg() statements so we only print the cookie
> when we are already in the DMA path.
>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

Thanks, applied for fixes!

Kind regards
Uffe

> ---
> This warning has existed for a long time, and it's only in debug code,
> so probably nobody cared.
>
> diff --git a/drivers/mmc/host/tmio_mmc_dma.c b/drivers/mmc/host/tmio_mmc_dma.c
> index e4b05dbb9ca8..4a0d6b80eaa3 100644
> --- a/drivers/mmc/host/tmio_mmc_dma.c
> +++ b/drivers/mmc/host/tmio_mmc_dma.c
> @@ -94,9 +94,9 @@ static void tmio_mmc_start_dma_rx(struct tmio_mmc_host *host)
> desc = NULL;
> ret = cookie;
> }
> + dev_dbg(&host->pdev->dev, "%s(): mapped %d -> %d, cookie %d, rq %p\n",
> + __func__, host->sg_len, ret, cookie, host->mrq);
> }
> - dev_dbg(&host->pdev->dev, "%s(): mapped %d -> %d, cookie %d, rq %p\n",
> - __func__, host->sg_len, ret, cookie, host->mrq);
>
> pio:
> if (!desc) {
> @@ -116,8 +116,8 @@ pio:
> "DMA failed: %d, falling back to PIO\n", ret);
> }
>
> - dev_dbg(&host->pdev->dev, "%s(): desc %p, cookie %d, sg[%d]\n", __func__,
> - desc, cookie, host->sg_len);
> + dev_dbg(&host->pdev->dev, "%s(): desc %p, sg[%d]\n", __func__,
> + desc, host->sg_len);
> }
>
> static void tmio_mmc_start_dma_tx(struct tmio_mmc_host *host)
> @@ -174,9 +174,9 @@ static void tmio_mmc_start_dma_tx(struct tmio_mmc_host *host)
> desc = NULL;
> ret = cookie;
> }
> + dev_dbg(&host->pdev->dev, "%s(): mapped %d -> %d, cookie %d, rq %p\n",
> + __func__, host->sg_len, ret, cookie, host->mrq);
> }
> - dev_dbg(&host->pdev->dev, "%s(): mapped %d -> %d, cookie %d, rq %p\n",
> - __func__, host->sg_len, ret, cookie, host->mrq);
>
> pio:
> if (!desc) {
> @@ -196,8 +196,7 @@ pio:
> "DMA failed: %d, falling back to PIO\n", ret);
> }
>
> - dev_dbg(&host->pdev->dev, "%s(): desc %p, cookie %d\n", __func__,
> - desc, cookie);
> + dev_dbg(&host->pdev->dev, "%s(): desc %p\n", __func__, desc);
> }
>
> void tmio_mmc_start_dma(struct tmio_mmc_host *host,
>