Re: [PATCH 1/1]linux-usb: fix the product IDs to be little endian ininitializers.c

From: Greg KH
Date: Wed Feb 06 2013 - 12:46:25 EST


On Wed, Feb 06, 2013 at 05:24:12PM +0800, fangxiaozhi 00110321 wrote:
> From: fangxiaozhi <huananhu@xxxxxxxxxx>
>
> 1. The idProduct is little endian, so make the product ID's value to be little endian. Make no break on big endian processors.
>
> Signed-off-by: fangxiaozhi <huananhu@xxxxxxxxxx>
> --------------------------------------------------------------------
>
> diff -uprN linux-3.8-rc6_orig/drivers/usb/storage/initializers.c linux-3.8-rc6/drivers/usb/storage/initializers.c
> --- linux-3.8-rc6_orig/drivers/usb/storage/initializers.c 2013-02-06 14:48:51.564355283 +0800
> +++ linux-3.8-rc6/drivers/usb/storage/initializers.c 2013-02-06 15:11:40.925434289 +0800
> @@ -152,12 +152,15 @@ static int usb_stor_huawei_dongles_pid(s
> * means the dongle in the single port mode,
> * and a switch command is required to be sent. */
> if (idesc && idesc->bInterfaceNumber == 0) {
> - if ((idProduct == 0x1001)
> - || (idProduct == 0x1003)
> - || (idProduct == 0x1004)
> - || (idProduct >= 0x1401 && idProduct <= 0x1500)
> - || (idProduct >= 0x1505 && idProduct <= 0x1600)
> - || (idProduct >= 0x1c02 && idProduct <= 0x2202)) {
> + if ((idProduct == cpu_to_le16(0x1001))

No, this doesn't fix the sparse warning, and is way too complex (and
doesn't really work well either.)

Please do the conversion on the value when you assign it to idProduct
and then you will be fine.

Please run sparse on your patch to ensure you got it right, if you would
have done so here, it would have been pretty obvious.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/