All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] wifi: mac80211: change initialize for sk_buff in ieee80211_tx_dequeue()
@ 2022-12-12  8:36 ` Wen Gong
  0 siblings, 0 replies; 12+ messages in thread
From: Wen Gong @ 2022-12-12  8:36 UTC (permalink / raw)
  To: johannes, ath11k; +Cc: linux-wireless, quic_wgong

The sk_buff is only set to NULL when initialize, sometimes it will goto
label "begin" after ieee80211_free_txskb(), then it points to a sk_buff
which is already freed. If it run into the "goto out" after arrived to
label "begin", then it will return a sk_buff which is freed, it is a
risk for use-after-free.

Fixes: ded4698b58cb ("mac80211: run late dequeue late tx handlers without holding fq->lock")
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
---
 net/mac80211/tx.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 2171cd1ca807..0b23cc9ab9c7 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3776,7 +3776,7 @@ struct sk_buff *ieee80211_tx_dequeue(struct ieee80211_hw *hw,
 	struct ieee80211_local *local = hw_to_local(hw);
 	struct txq_info *txqi = container_of(txq, struct txq_info, txq);
 	struct ieee80211_hdr *hdr;
-	struct sk_buff *skb = NULL;
+	struct sk_buff *skb;
 	struct fq *fq = &local->fq;
 	struct fq_tin *tin = &txqi->tin;
 	struct ieee80211_tx_info *info;
@@ -3790,6 +3790,8 @@ struct sk_buff *ieee80211_tx_dequeue(struct ieee80211_hw *hw,
 		return NULL;
 
 begin:
+	skb = NULL;
+
 	spin_lock_bh(&fq->lock);
 
 	if (test_bit(IEEE80211_TXQ_STOP, &txqi->flags) ||

base-commit: 922932ca02191a390f7f52fb6e21c44b50e14025
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-01-09 15:46 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-12  8:36 [PATCH] wifi: mac80211: change initialize for sk_buff in ieee80211_tx_dequeue() Wen Gong
2022-12-12  8:36 ` Wen Gong
2023-01-05  5:26 ` Guenter Roeck
2023-01-05  5:26   ` Guenter Roeck
2023-01-09 14:05   ` Alexander Wetzel
2023-01-09 14:05     ` Alexander Wetzel
2023-01-09 14:22     ` Alexander Wetzel
2023-01-09 14:22       ` Alexander Wetzel
2023-01-09 15:43       ` Guenter Roeck
2023-01-09 15:43         ` Guenter Roeck
2023-01-09 15:39     ` Guenter Roeck
2023-01-09 15:39       ` Guenter Roeck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.