Hi, a standard memory leak, as later allocations may fail even if prior allocations did not. Then the prior allocations must be undone. Regards Oliver Signed-off-by: Oliver Neukum <oliver@xxxxxxxxxx> -- commit cd2052eef79511ac2d05efec7d0af44549c38a00 Author: Oliver Neukum <oliver@xxxxxxxxxx> Date: Thu Jul 9 23:53:05 2009 +0200 staging: serqt_usb2: mem leak in error case diff --git a/drivers/staging/serqt_usb2/serqt_usb2.c b/drivers/staging/serqt_usb2/serqt_usb2.c index 90b29b5..e5c5785 100644 --- a/drivers/staging/serqt_usb2/serqt_usb2.c +++ b/drivers/staging/serqt_usb2/serqt_usb2.c @@ -736,6 +736,11 @@ static int qt_startup(struct usb_serial *serial) if (!qt_port) { dbg("%s: kmalloc for quatech_port (%d) failed!.", __func__, i); + for(--i; i >= 0; i--) { + port = serial->port[i]; + kfree(usb_get_serial_port_data(port)); + usb_set_serial_port_data(port, NULL); + } return -ENOMEM; } spin_lock_init(&qt_port->lock); -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html