* module may only use this macro once, and calling it replaces
  * module_init() and module_exit()
  *
- * Note, we can't use the generic module_driver() call here, due to the
- * two parameters in the usb_serial_* functions, so we roll our own here
- * :(
  */
 #define module_usb_serial_driver(__usb_driver, __serial_drivers)       \
-static int __init usb_serial_driver_init(void)                         \
-{                                                                      \
-       return usb_serial_register_drivers(&(__usb_driver),             \
-                                          (__serial_drivers));         \
-}                                                                      \
-module_init(usb_serial_driver_init);                                   \
-static void __exit usb_serial_driver_exit(void)                                \
-{                                                                      \
-       return usb_serial_deregister_drivers(&(__usb_driver),           \
-                                            (__serial_drivers));       \
-}                                                                      \
-module_exit(usb_serial_driver_exit);
+       module_driver(__usb_driver, usb_serial_register_drivers,        \
+                      usb_serial_deregister_drivers, __serial_drivers)
 
 #endif /* __LINUX_USB_SERIAL_H */