Skip to content

Commit 647024a

Browse files
trashseejhovold
authored andcommitted
USB: serial: fix memleak in driver-registration error path
udriver struct allocated by kzalloc() will not be freed if usb_register() and next calls fail. This patch fixes this by adding one more step with kfree(udriver) in error path. Signed-off-by: Alexey Klimov <[email protected]> Acked-by: Alan Stern <[email protected]> Cc: stable <[email protected]> Signed-off-by: Johan Hovold <[email protected]>
1 parent 01d7956 commit 647024a

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

drivers/usb/serial/usb-serial.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1433,7 +1433,7 @@ int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[]
14331433

14341434
rc = usb_register(udriver);
14351435
if (rc)
1436-
return rc;
1436+
goto failed_usb_register;
14371437

14381438
for (sd = serial_drivers; *sd; ++sd) {
14391439
(*sd)->usb_driver = udriver;
@@ -1451,6 +1451,8 @@ int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[]
14511451
while (sd-- > serial_drivers)
14521452
usb_serial_deregister(*sd);
14531453
usb_deregister(udriver);
1454+
failed_usb_register:
1455+
kfree(udriver);
14541456
return rc;
14551457
}
14561458
EXPORT_SYMBOL_GPL(usb_serial_register_drivers);

0 commit comments

Comments
 (0)