|
@@ -51,6 +51,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;
|
|
|
|
|
@@ -80,7 +81,15 @@ static int usb_serial_device_probe(struct device *dev)
|
|
|
}
|
|
|
|
|
|
minor = port->minor;
|
|
|
- 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_with_autopm;
|
|
|
+ }
|
|
|
+
|
|
|
dev_info(&port->serial->dev->dev,
|
|
|
"%s converter now attached to ttyUSB%d\n",
|
|
|
driver->description, minor);
|