]> git.hungrycats.org Git - linux/commitdiff
[PATCH] USB: fix error paths in kobil_sct
authorOliver Neukum <oliver@neukum.org>
Thu, 25 Mar 2004 09:19:03 +0000 (01:19 -0800)
committerGreg Kroah-Hartman <greg@kroah.com>
Thu, 25 Mar 2004 09:19:03 +0000 (01:19 -0800)
some error codes are incorrect and there's an URB leak in an error path.

drivers/usb/serial/kobil_sct.c

index 1ed1d7aa64a7ca11b59d1f14c7f45ff648f73398..76fa0e521449899b40ecd1905efbbe24a769bff0 100644 (file)
@@ -262,7 +262,7 @@ static int kobil_open (struct usb_serial_port *port, struct file *filp)
        // allocate memory for transfer buffer
        transfer_buffer = (unsigned char *) kmalloc(transfer_buffer_length, GFP_KERNEL);  
        if (! transfer_buffer) {
-               return -1;
+               return -ENOMEM;
        } else {
                memset(transfer_buffer, 0, transfer_buffer_length);
        }
@@ -274,7 +274,7 @@ static int kobil_open (struct usb_serial_port *port, struct file *filp)
                if (!port->write_urb) {
                        dbg("%s - port %d usb_alloc_urb failed", __FUNCTION__, port->number);
                        kfree(transfer_buffer);
-                       return -1;
+                       return -ENOMEM;
                }
        }
 
@@ -282,7 +282,9 @@ static int kobil_open (struct usb_serial_port *port, struct file *filp)
        port->write_urb->transfer_buffer = (unsigned char *) kmalloc(write_urb_transfer_buffer_length, GFP_KERNEL);
        if (! port->write_urb->transfer_buffer) {
                kfree(transfer_buffer);
-               return -1;
+               usb_free_urb(port->write_urb);
+               port->write_urb = NULL;
+               return -ENOMEM;
        } 
 
        // get hardware version