usbhid endianness annotations and fixes
authorAl Viro <viro@ftp.linux.org.uk>
Mon, 28 Apr 2008 06:00:05 +0000 (07:00 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 Apr 2008 17:03:31 +0000 (10:03 -0700)
usb_control_msg() converts arguments to little-endian itself,
doing that in caller means breakage on big-endian boxen.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/hid/usbhid/hid-core.c
include/linux/hid.h

index e0d805f..01427c5 100644 (file)
@@ -654,7 +654,7 @@ static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t co
        ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
                HID_REQ_SET_REPORT,
                USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
-               cpu_to_le16(((HID_OUTPUT_REPORT + 1) << 8) | *buf),
+               ((HID_OUTPUT_REPORT + 1) << 8) | *buf,
                interface->desc.bInterfaceNumber, buf + 1, count - 1,
                USB_CTRL_SET_TIMEOUT);
 
index d951ec4..4ce3b7a 100644 (file)
@@ -498,13 +498,13 @@ struct hid_parser {
 
 struct hid_class_descriptor {
        __u8  bDescriptorType;
-       __u16 wDescriptorLength;
+       __le16 wDescriptorLength;
 } __attribute__ ((packed));
 
 struct hid_descriptor {
        __u8  bLength;
        __u8  bDescriptorType;
-       __u16 bcdHID;
+       __le16 bcdHID;
        __u8  bCountryCode;
        __u8  bNumDescriptors;