浏览代码

ath9k: fix double-free bug on beacon generate failure

When the next beacon is sent, the ath_buf from the previous run is reused.
If getting a new beacon from mac80211 fails, bf->bf_mpdu is not reset, yet
the skb is freed, leading to a double-free on the next beacon tx attempt,
resulting in a system crash.

Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Felix Fietkau 12 年之前
父节点
当前提交
1adb2e2b5f
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. 1 0
      drivers/net/wireless/ath/ath9k/beacon.c

+ 1 - 0
drivers/net/wireless/ath/ath9k/beacon.c

@@ -147,6 +147,7 @@ static struct ath_buf *ath9k_beacon_generate(struct ieee80211_hw *hw,
 				 skb->len, DMA_TO_DEVICE);
 				 skb->len, DMA_TO_DEVICE);
 		dev_kfree_skb_any(skb);
 		dev_kfree_skb_any(skb);
 		bf->bf_buf_addr = 0;
 		bf->bf_buf_addr = 0;
+		bf->bf_mpdu = NULL;
 	}
 	}
 
 
 	skb = ieee80211_beacon_get(hw, vif);
 	skb = ieee80211_beacon_get(hw, vif);