Re: [PATCH -next v2] dmaengine: mcf-edma: fix x86_64 allmodconfig compilation warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Angelo,

Thanks for your patch!

On Fri, Sep 14, 2018 at 9:12 AM Angelo Dureghello <angelo@xxxxxxxx> wrote:
> This patch fixes the compilation warning reported
> during x86_64 allmodconfig build.

Please quote the warning, so people know what it is about:

    drivers/dma/mcf-edma.c: In function 'mcf_edma_filter_fn':
    drivers/dma/mcf-edma.c:296:33: warning: cast from pointer to
integer of different size [-Wpointer-to-int-cast]
       return (mcf_chan->slave_id == (u32)param);

> Reported-By: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> Signed-off-by: Angelo Dureghello <angelo@xxxxxxxx>
> ---
> Changes for v2:
>   - added Reported-By
> ---
>  drivers/dma/mcf-edma.c                     | 3 ++-
>  include/linux/platform_data/dma-mcf-edma.h | 2 +-
>  2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma/mcf-edma.c b/drivers/dma/mcf-edma.c
> index 4d30d5302649..e08e2409a102 100644
> --- a/drivers/dma/mcf-edma.c
> +++ b/drivers/dma/mcf-edma.c
> @@ -292,8 +292,9 @@ bool mcf_edma_filter_fn(struct dma_chan *chan, void *param)
>  {
>         if (chan->device->dev->driver == &mcf_edma_driver.driver) {
>                 struct fsl_edma_chan *mcf_chan = to_fsl_edma_chan(chan);
> +               unsigned int req = *(unsigned int *)param;

This looks a bit hackish to me.
>
> -               return (mcf_chan->slave_id == (u32)param);

The recommended way to cast from pointers to integers is to
use uintptr_t, which always has the same size as a pointer, i.e.:

        return (mcf_chan->slave_id == (uintptr_t)param);

> +               return (mcf_chan->slave_id == req);
>         }
>
>         return false;
> diff --git a/include/linux/platform_data/dma-mcf-edma.h b/include/linux/platform_data/dma-mcf-edma.h
> index d718ccfa3421..97cb79bda646 100644
> --- a/include/linux/platform_data/dma-mcf-edma.h
> +++ b/include/linux/platform_data/dma-mcf-edma.h
> @@ -21,7 +21,7 @@ struct dma_slave_map;
>
>  bool mcf_edma_filter_fn(struct dma_chan *chan, void *param);
>
> -#define MCF_EDMA_FILTER_PARAM(ch)      ((void *)ch)
> +#define MCF_EDMA_FILTER_PARAM(ch)      ((int[]) { (ch) })
>
>  /**
>   * struct mcf_edma_platform_data - platform specific data for eDMA engine

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux