Re: [PATCH 2/2] [PATCH] gpio: Explicitly cast from __be16 to unsigned short

From: Arnd Bergmann
Date: Mon Aug 05 2019 - 07:52:52 EST


On Mon, Aug 5, 2019 at 11:11 AM Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
>
> On Sun, Jul 21, 2019 at 2:53 PM Hennie Muller <hm@xxxxxxxxxxxxx> wrote:
>
> > cpu_to_be16 returns a __be16 value. This does not break anything
> > but does cause sparse to generate unnecessary warnings.
> >
> > Signed-off-by: Hennie Muller <hm@xxxxxxxxxxxxx>
> (...)
>
> > - gbmsg->val = cpu_to_be16(dir << offset);
> > - gbmsg->mask = cpu_to_be16(0x0001 << offset);
> > + gbmsg->val = (__force u16)cpu_to_be16(dir << offset);
> > + gbmsg->mask = (__force u16)cpu_to_be16(0x0001 << offset);
>
> Ugh I don't understand this.
>
> Arnd: you know this better than me: is this the right thing to do
> to get rid of sparse warnings from the code?

No, the structure should be modified to use __be16 fields instead of u16.

Arnd