dma: ixm-dma: fix warning comparison of distinct pointer types

Message ID 20190110111535.11235-1-anders.roxell@linaro.org
State Accepted
Commit 9227ab5643cb8350449502dd9e3168a873ab0e3b
Headers show
Series
  • dma: ixm-dma: fix warning comparison of distinct pointer types
Related show

Commit Message

Anders Roxell Jan. 10, 2019, 11:15 a.m.
The warning got introduced by commit 930507c18304 ("arm64: add basic
Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning
haven't been seen before since size_t was 'unsigned int' when built on
arm32.

../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:
../include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast
   (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                             ^~
../include/linux/kernel.h:860:4: note: in expansion of macro ‘__typecheck’
   (__typecheck(x, y) && __no_side_effects(x, y))
    ^~~~~~~~~~~
../include/linux/kernel.h:870:24: note: in expansion of macro ‘__safe_cmp’
  __builtin_choose_expr(__safe_cmp(x, y), \
                        ^~~~~~~~~~
../include/linux/kernel.h:879:19: note: in expansion of macro ‘__careful_cmp’
 #define min(x, y) __careful_cmp(x, y, <)
                   ^~~~~~~~~~~~~
../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’
  now = min(d->len, sg_dma_len(sg));
        ^~~

Rework so that we use min_t and pass in the size_t that returns the
minimum of two values, using the specified type.

Signed-off-by: Anders Roxell <anders.roxell@linaro.org>

---
 drivers/dma/imx-dma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.19.2

Comments

Olof Johansson Jan. 13, 2019, 6:35 p.m. | #1
On Thu, Jan 10, 2019 at 3:15 AM Anders Roxell <anders.roxell@linaro.org> wrote:
>

> The warning got introduced by commit 930507c18304 ("arm64: add basic

> Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning

> haven't been seen before since size_t was 'unsigned int' when built on

> arm32.

>

> ../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:

> ../include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast

>    (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))

>                              ^~

> ../include/linux/kernel.h:860:4: note: in expansion of macro ‘__typecheck’

>    (__typecheck(x, y) && __no_side_effects(x, y))

>     ^~~~~~~~~~~

> ../include/linux/kernel.h:870:24: note: in expansion of macro ‘__safe_cmp’

>   __builtin_choose_expr(__safe_cmp(x, y), \

>                         ^~~~~~~~~~

> ../include/linux/kernel.h:879:19: note: in expansion of macro ‘__careful_cmp’

>  #define min(x, y) __careful_cmp(x, y, <)

>                    ^~~~~~~~~~~~~

> ../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’

>   now = min(d->len, sg_dma_len(sg));

>         ^~~

>

> Rework so that we use min_t and pass in the size_t that returns the

> minimum of two values, using the specified type.

>

> Signed-off-by: Anders Roxell <anders.roxell@linaro.org>


'now' should probably also be a size_t, but it can be done separately.
imxdma_sg_next()'s return value is never checked anywhere, so the
function can be changed to void as well.

That being said, I think this specific patch should go in now to keep
warnings out of our standard builds. The more we keep around, the
harder it is to spot when a new legitimate one shows up.

Acked-by: Olof Johansson <olof@lixom.net>



-Olof
Fabio Estevam Jan. 14, 2019, 9:24 p.m. | #2
Hi Anders,

On Thu, Jan 10, 2019 at 9:15 AM Anders Roxell <anders.roxell@linaro.org> wrote:
>

> The warning got introduced by commit 930507c18304 ("arm64: add basic

> Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning

> haven't been seen before since size_t was 'unsigned int' when built on

> arm32.

>

> ../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:

> ../include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast

>    (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))

>                              ^~

> ../include/linux/kernel.h:860:4: note: in expansion of macro ‘__typecheck’

>    (__typecheck(x, y) && __no_side_effects(x, y))

>     ^~~~~~~~~~~

> ../include/linux/kernel.h:870:24: note: in expansion of macro ‘__safe_cmp’

>   __builtin_choose_expr(__safe_cmp(x, y), \

>                         ^~~~~~~~~~

> ../include/linux/kernel.h:879:19: note: in expansion of macro ‘__careful_cmp’

>  #define min(x, y) __careful_cmp(x, y, <)

>                    ^~~~~~~~~~~~~

> ../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’

>   now = min(d->len, sg_dma_len(sg));

>         ^~~

>

> Rework so that we use min_t and pass in the size_t that returns the

> minimum of two values, using the specified type.

>

> Signed-off-by: Anders Roxell <anders.roxell@linaro.org>


There is a typo in the Subject: s/ixm/imx/ and the prefix should be
dmaengine instead:

dmaengine: imx-dma: fix warning comparison of distinct pointer types

With that fixed:

Reviewed-by: Fabio Estevam <festevam@gmail.com>
Anders Roxell Jan. 15, 2019, 2:14 p.m. | #3
On Mon, 14 Jan 2019 at 22:24, Fabio Estevam <festevam@gmail.com> wrote:
>

> Hi Anders,

>

> On Thu, Jan 10, 2019 at 9:15 AM Anders Roxell <anders.roxell@linaro.org> wrote:

> >

> > The warning got introduced by commit 930507c18304 ("arm64: add basic

> > Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning

> > haven't been seen before since size_t was 'unsigned int' when built on

> > arm32.

> >

> > ../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:

> > ../include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast

> >    (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))

> >                              ^~

> > ../include/linux/kernel.h:860:4: note: in expansion of macro ‘__typecheck’

> >    (__typecheck(x, y) && __no_side_effects(x, y))

> >     ^~~~~~~~~~~

> > ../include/linux/kernel.h:870:24: note: in expansion of macro ‘__safe_cmp’

> >   __builtin_choose_expr(__safe_cmp(x, y), \

> >                         ^~~~~~~~~~

> > ../include/linux/kernel.h:879:19: note: in expansion of macro ‘__careful_cmp’

> >  #define min(x, y) __careful_cmp(x, y, <)

> >                    ^~~~~~~~~~~~~

> > ../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’

> >   now = min(d->len, sg_dma_len(sg));

> >         ^~~

> >

> > Rework so that we use min_t and pass in the size_t that returns the

> > minimum of two values, using the specified type.

> >

> > Signed-off-by: Anders Roxell <anders.roxell@linaro.org>

>

> There is a typo in the Subject: s/ixm/imx/ and the prefix should be

> dmaengine instead:

>

> dmaengine: imx-dma: fix warning comparison of distinct pointer types

>

> With that fixed:

>

> Reviewed-by: Fabio Estevam <festevam@gmail.com>


OK, thanks Fabio.

Dan, do you want me to resend the patch with an updated shortlog or will
you do that when you apply the patch?

Cheers,
Anders
Vinod Koul Jan. 20, 2019, 5:46 a.m. | #4
On 15-01-19, 15:14, Anders Roxell wrote:
> On Mon, 14 Jan 2019 at 22:24, Fabio Estevam <festevam@gmail.com> wrote:

> >

> > Hi Anders,

> >

> > On Thu, Jan 10, 2019 at 9:15 AM Anders Roxell <anders.roxell@linaro.org> wrote:

> > >

> > > The warning got introduced by commit 930507c18304 ("arm64: add basic

> > > Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning

> > > haven't been seen before since size_t was 'unsigned int' when built on

> > > arm32.

> > >

> > > ../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:

> > > ../include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast

> > >    (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))

> > >                              ^~

> > > ../include/linux/kernel.h:860:4: note: in expansion of macro ‘__typecheck’

> > >    (__typecheck(x, y) && __no_side_effects(x, y))

> > >     ^~~~~~~~~~~

> > > ../include/linux/kernel.h:870:24: note: in expansion of macro ‘__safe_cmp’

> > >   __builtin_choose_expr(__safe_cmp(x, y), \

> > >                         ^~~~~~~~~~

> > > ../include/linux/kernel.h:879:19: note: in expansion of macro ‘__careful_cmp’

> > >  #define min(x, y) __careful_cmp(x, y, <)

> > >                    ^~~~~~~~~~~~~

> > > ../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’

> > >   now = min(d->len, sg_dma_len(sg));

> > >         ^~~

> > >

> > > Rework so that we use min_t and pass in the size_t that returns the

> > > minimum of two values, using the specified type.

> > >

> > > Signed-off-by: Anders Roxell <anders.roxell@linaro.org>

> >

> > There is a typo in the Subject: s/ixm/imx/ and the prefix should be

> > dmaengine instead:

> >

> > dmaengine: imx-dma: fix warning comparison of distinct pointer types

> >

> > With that fixed:

> >

> > Reviewed-by: Fabio Estevam <festevam@gmail.com>

> 

> OK, thanks Fabio.

> 

> Dan, do you want me to resend the patch with an updated shortlog or will

> you do that when you apply the patch?


applied after fixing subsystem name and driver name

-- 
~Vinod

Patch

diff --git a/drivers/dma/imx-dma.c b/drivers/dma/imx-dma.c
index c2fff3f6c9ca..fa3ef43fe314 100644
--- a/drivers/dma/imx-dma.c
+++ b/drivers/dma/imx-dma.c
@@ -285,7 +285,7 @@  static inline int imxdma_sg_next(struct imxdma_desc *d)
 	struct scatterlist *sg = d->sg;
 	unsigned long now;
 
-	now = min(d->len, sg_dma_len(sg));
+	now = min_t(size_t, d->len, sg_dma_len(sg));
 	if (d->len != IMX_DMA_LENGTH_LOOP)
 		d->len -= now;