ChangeSet 1.1254.1.3, 2003/05/29 15:17:04-07:00, [EMAIL PROTECTED]

[PATCH] USB: allocate memory for reset earlier

if we fail with -ENOMEM, we should do it before the device must be
reparsed.


 drivers/usb/core/hub.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)


diff -Nru a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
--- a/drivers/usb/core/hub.c    Fri May 30 11:35:39 2003
+++ b/drivers/usb/core/hub.c    Fri May 30 11:35:39 2003
@@ -1198,12 +1198,18 @@
        if (port < 0)
                return -ENOENT;
 
+       descriptor = kmalloc(sizeof *descriptor, GFP_NOIO);
+       if (!descriptor) {
+               return -ENOMEM;
+       }
+
        down(&usb_address0_sem);
 
        /* Send a reset to the device */
        if (usb_hub_port_reset(parent, port, dev, HUB_SHORT_RESET_TIME)) {
                usb_hub_port_disable(parent, port);
                up(&usb_address0_sem);
+               kfree(descriptor);
                return(-ENODEV);
        }
 
@@ -1213,6 +1219,7 @@
                err("USB device not accepting new address (error=%d)", ret);
                usb_hub_port_disable(parent, port);
                up(&usb_address0_sem);
+               kfree(descriptor);
                return ret;
        }
 
@@ -1230,10 +1237,7 @@
         * If nothing changed, we reprogram the configuration and then
         * the alternate settings.
         */
-       descriptor = kmalloc(sizeof *descriptor, GFP_NOIO);
-       if (!descriptor) {
-               return -ENOMEM;
-       }
+
        ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, descriptor,
                        sizeof(*descriptor));
        if (ret < 0) {
@@ -1260,7 +1264,7 @@
                                        "(expected %Zi, got %i)",
                                        dev->devpath,
                                        sizeof(dev->descriptor), ret);
-        
+
                        clear_bit(dev->devnum, dev->bus->devmap.devicemap);
                        dev->devnum = -1;
                        return -EIO;



-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to