|
@@ -1433,7 +1433,7 @@ int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[]
|
|
|
|
|
|
rc = usb_register(udriver);
|
|
|
if (rc)
|
|
|
- return rc;
|
|
|
+ goto failed_usb_register;
|
|
|
|
|
|
for (sd = serial_drivers; *sd; ++sd) {
|
|
|
(*sd)->usb_driver = udriver;
|
|
@@ -1451,6 +1451,8 @@ int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[]
|
|
|
while (sd-- > serial_drivers)
|
|
|
usb_serial_deregister(*sd);
|
|
|
usb_deregister(udriver);
|
|
|
+failed_usb_register:
|
|
|
+ kfree(udriver);
|
|
|
return rc;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(usb_serial_register_drivers);
|