USB: serial: fix tty-device error handling at probe
[pandora-kernel.git] / drivers / usb / serial / bus.c
index 020b515..a8dc799 100644 (file)
@@ -52,6 +52,7 @@ static int usb_serial_device_probe(struct device *dev)
 {
        struct usb_serial_driver *driver;
        struct usb_serial_port *port;
+       struct device *tty_dev;
        int retval = 0;
        int minor;
 
@@ -78,7 +79,15 @@ static int usb_serial_device_probe(struct device *dev)
        }
 
        minor = port->number;
-       tty_register_device(usb_serial_tty_driver, minor, dev);
+       tty_dev = tty_register_device(usb_serial_tty_driver, minor, dev);
+       if (IS_ERR(tty_dev)) {
+               retval = PTR_ERR(tty_dev);
+               device_remove_file(dev, &dev_attr_port_number);
+               if (driver->port_remove)
+                       driver->port_remove(port);
+               goto exit;
+       }
+
        dev_info(&port->serial->dev->dev,
                 "%s converter now attached to ttyUSB%d\n",
                 driver->description, minor);