Re: [PATCH] Staging: wlan-ng: hfa384x_usb: Fixed sparse warning cast to restricted __le16

From: Frans Klaver
Date: Fri Jun 23 2017 - 18:41:30 EST


On Fri, Jun 16, 2017 at 12:05 PM, Jaya Durga <jayad@xxxxxxx> wrote:
> when building with make C=1 CF=-D__CHECK_ENDIAN__
>
> drivers/staging/wlan-ng/hfa384x_usb.c:3383:36: warning: cast to restricted __le16
>
> fixed by using the le16_to_cpus function.
>
> Signed-off-by: Jaya Durga <jayad@xxxxxxx>
> ---
> drivers/staging/wlan-ng/hfa384x_usb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c
> index a812e55..0e95e45 100644
> --- a/drivers/staging/wlan-ng/hfa384x_usb.c
> +++ b/drivers/staging/wlan-ng/hfa384x_usb.c
> @@ -3380,7 +3380,7 @@ static void hfa384x_usbin_rx(struct wlandevice *wlandev, struct sk_buff *skb)
> u16 fc;
>
> /* Byte order convert once up front. */
> - usbin->rxfrm.desc.status = le16_to_cpu(usbin->rxfrm.desc.status);
> + le16_to_cpus(&usbin->rxfrm.desc.status);

Why is a cpu ordered value stored into a field that is documented to
be little endian? When this happens we can't rely on this variable
being little endian, can we? With the way things are now, at least
it's flagged by some tool. Come this patch, it won't be.

I don't think this patch fixes anything; it just tells sparse to shut up.

Frans