summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2016-05-08 20:08:02 +0200
committerJiri Slaby <jslaby@suse.cz>2016-06-15 09:32:06 +0200
commite78a0e1d718178cbee94a5d6f9ba109833708400 (patch)
tree57f5a4a9b10f5878a02a8ad1288b11cdc95186e6 /drivers/usb
parent46e8b7f747e086a5ec3f93350dcae4a45450032c (diff)
downloadlwn-e78a0e1d718178cbee94a5d6f9ba109833708400.tar.gz
lwn-e78a0e1d718178cbee94a5d6f9ba109833708400.zip
USB: serial: quatech2: fix use-after-free in probe error path
commit 028c49f5e02a257c94129cd815f7c8485f51d4ef upstream. The interface read URB is submitted in attach, but was only unlinked by the driver at disconnect. In case of a late probe error (e.g. due to failed minor allocation), disconnect is never called and we would end up with active URBs for an unbound interface. This in turn could lead to deallocated memory being dereferenced in the completion callback. Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver") Signed-off-by: Johan Hovold <johan@kernel.org> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/serial/quatech2.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/usb/serial/quatech2.c b/drivers/usb/serial/quatech2.c
index a24d59ae4032..58ab9e52a938 100644
--- a/drivers/usb/serial/quatech2.c
+++ b/drivers/usb/serial/quatech2.c
@@ -142,6 +142,7 @@ static void qt2_release(struct usb_serial *serial)
serial_priv = usb_get_serial_data(serial);
+ usb_kill_urb(serial_priv->read_urb);
usb_free_urb(serial_priv->read_urb);
kfree(serial_priv->read_buffer);
kfree(serial_priv);