[PATCH] USB: fix usb-serial generic initialization
authorGreg Kroah-Hartman <gregkh@suse.de>
Thu, 26 May 2005 12:55:55 +0000 (05:55 -0700)
committerGreg KH <gregkh@suse.de>
Tue, 31 May 2005 21:13:59 +0000 (14:13 -0700)
At module load time, if a generic device is found, the tty information
for the device is not set up properly (as the tty structures aren't initialized
yet.)  This can cause big problems for things like udev.  This patch fixes this.

Thanks to Kay Sievers for the original patch for this problem.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/usb-serial.c

index 4536f63faaeaa299ffd6c719e23660d401f87f0f..5da76dd8fb285681d4f5774b2468dc14794ec910 100644 (file)
@@ -1297,13 +1297,6 @@ static int __init usb_serial_init(void)
                goto exit_bus;
        }
 
-       /* register the generic driver, if we should */
-       result = usb_serial_generic_register(debug);
-       if (result < 0) {
-               err("%s - registering generic driver failed", __FUNCTION__);
-               goto exit_generic;
-       }
-
        usb_serial_tty_driver->owner = THIS_MODULE;
        usb_serial_tty_driver->driver_name = "usbserial";
        usb_serial_tty_driver->devfs_name = "usb/tts/";
@@ -1329,17 +1322,24 @@ static int __init usb_serial_init(void)
                goto exit_tty;
        }
 
+       /* register the generic driver, if we should */
+       result = usb_serial_generic_register(debug);
+       if (result < 0) {
+               err("%s - registering generic driver failed", __FUNCTION__);
+               goto exit_generic;
+       }
+
        info(DRIVER_DESC " " DRIVER_VERSION);
 
        return result;
 
+exit_generic:
+       usb_deregister(&usb_serial_driver);
+
 exit_tty:
        tty_unregister_driver(usb_serial_tty_driver);
 
 exit_reg_driver:
-       usb_serial_generic_deregister();
-
-exit_generic:
        bus_unregister(&usb_serial_bus_type);
 
 exit_bus: