orinoco_usb: fix memory leak in ezusb_access_ltv() when device disconnected
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Thu, 13 Jun 2013 20:26:11 +0000 (00:26 +0400)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 14 Jun 2013 17:37:16 +0000 (13:37 -0400)
If "device is disconnected" check occurs to be true in ezusb_access_ltv(),
it just return -ENODEV. But that means request_context is leaked since
there are no any references to it anymore.
The patch adds a call to ezusb_request_context_put() before return.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/orinoco/orinoco_usb.c

index 1f9cb55c33608c1a5daeab253ebd9372da8827e7..bdfe637953f4d3a41270abafa9e174d04901879c 100644 (file)
@@ -881,7 +881,8 @@ static int ezusb_access_ltv(struct ezusb_priv *upriv,
 
        if (!upriv->udev) {
                dbg("Device disconnected");
-               return -ENODEV;
+               retval = -ENODEV;
+               goto exit;
        }
 
        if (upriv->read_urb->status != -EINPROGRESS)