summaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/usb-wwan.h
diff options
context:
space:
mode:
authorJohan Hovold <jhovold@gmail.com>2012-10-25 10:29:16 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-25 18:37:13 +0200
commitb8f0e82044c9ba40e92340c8a6d47d6bd6d819bc (patch)
tree3b184622994a7ebc76b743dd7df16534a5c826d8 /drivers/usb/serial/usb-wwan.h
parentUSB: keyspan: fix NULL-pointer dereferences and memory leaks (diff)
downloadlinux-b8f0e82044c9ba40e92340c8a6d47d6bd6d819bc.tar.xz
linux-b8f0e82044c9ba40e92340c8a6d47d6bd6d819bc.zip
USB: usb-wwan: fix multiple memory leaks in error paths
Fix port-data memory leak in usb-serial probe error path by moving port data allocation to port_probe. Since commit a1028f0abf ("usb: usb_wwan: replace release and disconnect with a port_remove hook") port data is deallocated in port_remove. This leaves a possibility for memory leaks if usb-serial probe fails after attach but before the port in question has been successfully registered. Note that this patch also fixes two additional memory leaks in the error path of attach should port initialisation fail for any port as the urbs were never freed and neither was the data of any of the successfully initialised ports. Compile-only tested. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial/usb-wwan.h')
-rw-r--r--drivers/usb/serial/usb-wwan.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/serial/usb-wwan.h b/drivers/usb/serial/usb-wwan.h
index 1f034d2397c6..684739b8efd0 100644
--- a/drivers/usb/serial/usb-wwan.h
+++ b/drivers/usb/serial/usb-wwan.h
@@ -8,7 +8,7 @@
extern void usb_wwan_dtr_rts(struct usb_serial_port *port, int on);
extern int usb_wwan_open(struct tty_struct *tty, struct usb_serial_port *port);
extern void usb_wwan_close(struct usb_serial_port *port);
-extern int usb_wwan_startup(struct usb_serial *serial);
+extern int usb_wwan_port_probe(struct usb_serial_port *port);
extern int usb_wwan_port_remove(struct usb_serial_port *port);
extern int usb_wwan_write_room(struct tty_struct *tty);
extern void usb_wwan_set_termios(struct tty_struct *tty,