USB: serial: fix memleak in driver-registration error path
commit 647024a7df36014bbc4479d92d88e6b77c0afcf6 upstream. 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 <klimov.linux@gmail.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c5a6d60b93
commit
697c84be4b
@ -1432,7 +1432,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;
|
||||
@ -1450,6 +1450,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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user