},
        .id_table =             generic_device_ids,
        .num_ports =            1,
-       .disconnect =           usb_serial_generic_disconnect,
        .release =              usb_serial_generic_release,
        .throttle =             usb_serial_generic_throttle,
        .unthrottle =           usb_serial_generic_unthrottle,
 }
 EXPORT_SYMBOL_GPL(usb_serial_generic_resume);
 
-void usb_serial_generic_disconnect(struct usb_serial *serial)
-{
-}
-EXPORT_SYMBOL_GPL(usb_serial_generic_disconnect);
-
 void usb_serial_generic_release(struct usb_serial *serial)
 {
 }
 
                                device_del(&port->dev);
                }
        }
-       serial->type->disconnect(serial);
+       if (serial->type->disconnect)
+               serial->type->disconnect(serial);
 
        /* let the last holder of this object cause it to be cleaned up */
        usb_serial_put(serial);
        set_to_generic_if_null(device, chars_in_buffer);
        set_to_generic_if_null(device, read_bulk_callback);
        set_to_generic_if_null(device, write_bulk_callback);
-       set_to_generic_if_null(device, disconnect);
        set_to_generic_if_null(device, release);
        set_to_generic_if_null(device, process_read_urb);
        set_to_generic_if_null(device, prepare_write_buffer);
 
 extern void usb_serial_generic_write_bulk_callback(struct urb *urb);
 extern void usb_serial_generic_throttle(struct tty_struct *tty);
 extern void usb_serial_generic_unthrottle(struct tty_struct *tty);
-extern void usb_serial_generic_disconnect(struct usb_serial *serial);
 extern void usb_serial_generic_release(struct usb_serial *serial);
 extern int usb_serial_generic_register(void);
 extern void usb_serial_generic_deregister(void);