diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2018-11-17 20:55:03 -0600 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-12-29 13:37:58 +0100 |
commit | fed44d6cb15f5e9dea806ae555dbe3b06a6c312d (patch) | |
tree | 9ad6d2bd9a075fe0e080c67d2bf4771e933f7a8c /drivers/net/wireless | |
parent | 5ecdfbb0d9f0f588ca6bfcb7703bc816a2b9fab5 (diff) | |
download | linux-stable-fed44d6cb15f5e9dea806ae555dbe3b06a6c312d.tar.gz linux-stable-fed44d6cb15f5e9dea806ae555dbe3b06a6c312d.tar.bz2 linux-stable-fed44d6cb15f5e9dea806ae555dbe3b06a6c312d.zip |
rtlwifi: Fix leak of skb when processing C2H_BT_INFO
commit 8cfa272b0d321160ebb5b45073e39ef0a6ad73f2 upstream.
With commit 0a9f8f0a1ba9 ("rtlwifi: fix btmpinfo timeout while processing
C2H_BT_INFO"), calling rtl_c2hcmd_enqueue() with rtl_c2h_fast_cmd() true,
the routine returns without freeing that skb, thereby leaking it.
This issue has been discussed at https://github.com/lwfinger/rtlwifi_new/issues/401
and the fix tested there.
Fixes: 0a9f8f0a1ba9 ("rtlwifi: fix btmpinfo timeout while processing C2H_BT_INFO")
Reported-and-tested-by: Francisco Machado Magalhães Neto <franmagneto@gmail.com>
Cc: Francisco Machado Magalhães Neto <franmagneto@gmail.com>
Cc: Ping-Ke Shih <pkshih@realtek.com>
Cc: Stable <stable@vger.kernel.org> # 4.18+
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/realtek/rtlwifi/base.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c index f4122c8fdd97..ef9b502ce576 100644 --- a/drivers/net/wireless/realtek/rtlwifi/base.c +++ b/drivers/net/wireless/realtek/rtlwifi/base.c @@ -2289,6 +2289,7 @@ void rtl_c2hcmd_enqueue(struct ieee80211_hw *hw, struct sk_buff *skb) if (rtl_c2h_fast_cmd(hw, skb)) { rtl_c2h_content_parsing(hw, skb); + kfree_skb(skb); return; } |