hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/usb/core/hcd.c
....@@ -982,6 +982,7 @@
982982 {
983983 struct device *parent_dev = hcd->self.controller;
984984 struct usb_device *usb_dev = hcd->self.root_hub;
985
+ struct usb_device_descriptor *descr;
985986 const int devnum = 1;
986987 int retval;
987988
....@@ -993,13 +994,16 @@
993994 mutex_lock(&usb_bus_idr_lock);
994995
995996 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);
9981000 mutex_unlock(&usb_bus_idr_lock);
9991001 dev_dbg (parent_dev, "can't read %s device descriptor %d\n",
10001002 dev_name(&usb_dev->dev), retval);
1001
- return (retval < 0) ? retval : -EMSGSIZE;
1003
+ return retval;
10021004 }
1005
+ usb_dev->descriptor = *descr;
1006
+ kfree(descr);
10031007
10041008 if (le16_to_cpu(usb_dev->descriptor.bcdUSB) >= 0x0201) {
10051009 retval = usb_get_bos_descriptor(usb_dev);