iforce->cr.bRequestType = USB_TYPE_VENDOR | USB_DIR_IN | USB_RECIP_INTERFACE;
        iforce->cr.wIndex = 0;
-       iforce->cr.wLength = 16;
+       iforce->cr.wLength = cpu_to_le16(16);
 
        usb_fill_int_urb(iforce->irq, dev, usb_rcvintpipe(dev, epirq->bEndpointAddress),
                        iforce->data, 16, iforce_usb_irq, iforce, epirq->bInterval);
 
        dbg("Extra descriptor success: type:%d  len:%d",
            hid_desc->bDescriptorType,  hid_desc->wDescriptorLength);
 
-       report = kzalloc(hid_desc->wDescriptorLength, GFP_KERNEL);
+       report = kzalloc(le16_to_cpu(hid_desc->wDescriptorLength), GFP_KERNEL);
        if (!report) {
                err("No more memory for report");
                error = -ENOMEM;
                                         REPORT_DEVICE_TYPE << 8,
                                         0, /* interface */
                                         report,
-                                        hid_desc->wDescriptorLength,
+                                        le16_to_cpu(hid_desc->wDescriptorLength),
                                         5000); /* 5 secs */
 
-               if (result == hid_desc->wDescriptorLength)
+               if (result == le16_to_cpu(hid_desc->wDescriptorLength))
                        break;
        }
 
        /* If we didn't get the report, fail */
        dbg("usb_control_msg result: :%d", result);
-       if (result != hid_desc->wDescriptorLength) {
+       if (result != le16_to_cpu(hid_desc->wDescriptorLength)) {
                err("Failed to get HID Report Descriptor of size: %d",
                    hid_desc->wDescriptorLength);
                error = -EIO;