diff mbox series

ath11k: fix memory leak in monitor mode

Message ID 1573506903-3593-1-git-send-email-milehu@codeaurora.org (mailing list archive)
State Accepted
Commit a20bffb1b01d351367908cac1c12ddb602840820
Delegated to: Kalle Valo
Headers show
Series ath11k: fix memory leak in monitor mode | expand

Commit Message

Miles Hu Nov. 11, 2019, 9:15 p.m. UTC
remove tail check to avoid last amsdu leak.
recycle skb in ppdu id wrap around case

Signed-off-by: Miles Hu <milehu@codeaurora.org>
---
 drivers/net/wireless/ath/ath11k/dp_rx.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

Comments

Kalle Valo Nov. 22, 2019, 10:39 a.m. UTC | #1
Miles Hu <milehu@codeaurora.org> wrote:

> remove tail check to avoid last amsdu leak.
> recycle skb in ppdu id wrap around case
> 
> Signed-off-by: Miles Hu <milehu@codeaurora.org>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath11k-post-bringup branch of ath.git, thanks.

a20bffb1b01d ath11k: fix memory leak in monitor mode
diff mbox series

Patch

--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
@@ -3991,8 +3991,15 @@  ath11k_dp_rx_mon_mpdu_pop(struct ath11k
 
 				if (ath11k_dp_rx_mon_comp_ppduid(msdu_ppdu_id,
 								 ppdu_id,
-								 &rx_bufs_used))
+								 &rx_bufs_used)) {
+					if (rx_bufs_used) {
+						drop_mpdu = true;
+						dev_kfree_skb_any(msdu);
+						msdu = NULL;
+						goto next_msdu;
+					}
 					return rx_bufs_used;
+				}
 				pmon->mon_last_linkdesc_paddr = paddr;
 				is_first_msdu = false;
 			}
@@ -4194,7 +4201,7 @@  static int ath11k_dp_rx_mon_deliver(stru
 
 		ath11k_dp_rx_deliver_msdu(ar, napi, mon_skb);
 		mon_skb = skb_next;
-	} while (mon_skb && (mon_skb != tail_msdu));
+	} while (mon_skb);
 	rxs->flag = 0;
 
 	return 0;