USB: fix sign-extension bug in the hub driver
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 24 Jan 2013 20:04:13 +0000 (15:04 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 24 Jan 2013 22:03:56 +0000 (14:03 -0800)
This patch (as1646) fixes a long-standing bug in the USB hub driver.
Upon conversion from char to unsigned long, the bytes in the status
buffer are subject to unwanted sign extension.  The bytes should be
declared as u8 rather than char, to prevent this.

This effects of this bug are minimal.  The hub driver may end up doing
a little unnecessary extra work because it thinks events have occurred
on some ports when they really haven't.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/hub.h

index d16a7c98aea91ae088bc5aeee2b653bff45bc3cb..c472058f8f278aa04c02ca76122b58ad57a8c257 100644 (file)
@@ -31,7 +31,7 @@ struct usb_hub {
        struct urb              *urb;           /* for interrupt polling pipe */
 
        /* buffer for urb ... with extra space in case of babble */
-       char                    (*buffer)[8];
+       u8                      (*buffer)[8];
        union {
                struct usb_hub_status   hub;
                struct usb_port_status  port;