From: Mariusz Kozlowski If at some point cypress_init() fails deregister only the resources that were registered until that point. Signed-off-by: Mariusz Kozlowski Cc: Mike Isely Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/usb/serial/cypress_m8.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) diff -puN drivers/usb/serial/cypress_m8.c~usb-cypress_m8-init-error-path-fix drivers/usb/serial/cypress_m8.c --- a/drivers/usb/serial/cypress_m8.c~usb-cypress_m8-init-error-path-fix +++ a/drivers/usb/serial/cypress_m8.c @@ -1684,15 +1684,14 @@ static int __init cypress_init(void) info(DRIVER_DESC " " DRIVER_VERSION); return 0; + failed_usb_register: - usb_deregister(&cypress_driver); -failed_ca42v2_register: usb_serial_deregister(&cypress_ca42v2_device); -failed_hidcom_register: +failed_ca42v2_register: usb_serial_deregister(&cypress_hidcom_device); -failed_em_register: +failed_hidcom_register: usb_serial_deregister(&cypress_earthmate_device); - +failed_em_register: return retval; } _