.. | .. |
---|
982 | 982 | { |
---|
983 | 983 | struct device *parent_dev = hcd->self.controller; |
---|
984 | 984 | struct usb_device *usb_dev = hcd->self.root_hub; |
---|
| 985 | + struct usb_device_descriptor *descr; |
---|
985 | 986 | const int devnum = 1; |
---|
986 | 987 | int retval; |
---|
987 | 988 | |
---|
.. | .. |
---|
993 | 994 | mutex_lock(&usb_bus_idr_lock); |
---|
994 | 995 | |
---|
995 | 996 | usb_dev->ep0.desc.wMaxPacketSize = cpu_to_le16(64); |
---|
996 | | - retval = usb_get_device_descriptor(usb_dev, USB_DT_DEVICE_SIZE); |
---|
997 | | - if (retval != sizeof usb_dev->descriptor) { |
---|
| 997 | + descr = usb_get_device_descriptor(usb_dev); |
---|
| 998 | + if (IS_ERR(descr)) { |
---|
| 999 | + retval = PTR_ERR(descr); |
---|
998 | 1000 | mutex_unlock(&usb_bus_idr_lock); |
---|
999 | 1001 | dev_dbg (parent_dev, "can't read %s device descriptor %d\n", |
---|
1000 | 1002 | dev_name(&usb_dev->dev), retval); |
---|
1001 | | - return (retval < 0) ? retval : -EMSGSIZE; |
---|
| 1003 | + return retval; |
---|
1002 | 1004 | } |
---|
| 1005 | + usb_dev->descriptor = *descr; |
---|
| 1006 | + kfree(descr); |
---|
1003 | 1007 | |
---|
1004 | 1008 | if (le16_to_cpu(usb_dev->descriptor.bcdUSB) >= 0x0201) { |
---|
1005 | 1009 | retval = usb_get_bos_descriptor(usb_dev); |
---|