From 5f8c609eb0ad5430d99ca59ac503ef457fb9a248 Mon Sep 17 00:00:00 2001 From: Larry Finger Date: Mon, 7 Oct 2013 10:10:55 -0500 Subject: [PATCH] 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 --- drivers/staging/rtl8188eu/hal/usb_ops_linux.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/staging/rtl8188eu/hal/usb_ops_linux.c b/drivers/staging/rtl8188eu/hal/usb_ops_linux.c index 2a20f23..787763e 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; -- 2.7.4