From: Johan Hovold Date: Sun, 8 May 2016 18:08:02 +0000 (+0200) Subject: USB: serial: quatech2: fix use-after-free in probe error path X-Git-Tag: v4.1.12-92~15^2~139 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=1af3b6028b6c207d3309228127a9c33f58e55a7e;p=users%2Fjedix%2Flinux-maple.git USB: serial: quatech2: fix use-after-free in probe error path Orabug: 25256931 [ Upstream commit 028c49f5e02a257c94129cd815f7c8485f51d4ef ] 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") Cc: stable # v3.5: 40d04738491d Signed-off-by: Johan Hovold Acked-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin (cherry picked from commit 7124f5dfff7b22fd91546ce7dbf9e80b56f0d61f) Signed-off-by: Dhaval Giani --- diff --git a/drivers/usb/serial/quatech2.c b/drivers/usb/serial/quatech2.c index 504f5bff79c0..b18974cbd995 100644 --- a/drivers/usb/serial/quatech2.c +++ b/drivers/usb/serial/quatech2.c @@ -141,6 +141,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);