usbhid endianness annotations and fixes
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>
This commit is contained in:
@ -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),
|
ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
|
||||||
HID_REQ_SET_REPORT,
|
HID_REQ_SET_REPORT,
|
||||||
USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
|
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,
|
interface->desc.bInterfaceNumber, buf + 1, count - 1,
|
||||||
USB_CTRL_SET_TIMEOUT);
|
USB_CTRL_SET_TIMEOUT);
|
||||||
|
|
||||||
|
@ -498,13 +498,13 @@ struct hid_parser {
|
|||||||
|
|
||||||
struct hid_class_descriptor {
|
struct hid_class_descriptor {
|
||||||
__u8 bDescriptorType;
|
__u8 bDescriptorType;
|
||||||
__u16 wDescriptorLength;
|
__le16 wDescriptorLength;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct hid_descriptor {
|
struct hid_descriptor {
|
||||||
__u8 bLength;
|
__u8 bLength;
|
||||||
__u8 bDescriptorType;
|
__u8 bDescriptorType;
|
||||||
__u16 bcdHID;
|
__le16 bcdHID;
|
||||||
__u8 bCountryCode;
|
__u8 bCountryCode;
|
||||||
__u8 bNumDescriptors;
|
__u8 bNumDescriptors;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user