From: Larry Finger Date: Mon, 7 Oct 2013 15:10:55 +0000 (-0500) Subject: staging: r8188eu: Fix skb leak in usb_read_port_complete() X-Git-Tag: firefly_0821_release~176^2~5057^2~422 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5f8c609eb0ad5430d99ca59ac503ef457fb9a248;p=firefly-linux-kernel-4.4.55.git staging: r8188eu: Fix skb leak in usb_read_port_complete() In the completion routine for a usb_fill_bulk_urb() call, an skb is leaked whenever the status of the USB transaction is not zero. A call to skb_put() is needed to fix the problem. Signed-off-by: Larry Finger Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/rtl8188eu/hal/usb_ops_linux.c b/drivers/staging/rtl8188eu/hal/usb_ops_linux.c index 2a20f2348108..787763ef74c6 100644 --- a/drivers/staging/rtl8188eu/hal/usb_ops_linux.c +++ b/drivers/staging/rtl8188eu/hal/usb_ops_linux.c @@ -547,6 +547,8 @@ static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs) RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("usb_read_port_complete : purb->status(%d) != 0\n", purb->status)); DBG_88E("###=> usb_read_port_complete => urb status(%d)\n", purb->status); + skb_put(precvbuf->pskb, purb->actual_length); + precvbuf->pskb = NULL; if (rtw_inc_and_chk_continual_urb_error(adapter_to_dvobj(adapt))) adapt->bSurpriseRemoved = true;