The radiotap headroom is allocated only if IEEE80211_CONF_MONITOR is set.
However, it is potentially racing that SKB allocation without radiotap
headroom but adding radiotap from matched PPDU status of another SKB.
Add a check to avoid the case.
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260506131000.1706298-15-pkshih@realtek.com
if (!(rtwdev->hw->conf.flags & IEEE80211_CONF_MONITOR))
return;
+ /*
+ * At transient adding a monitor vif from a station vif, the headroom
+ * might not include radiotap.
+ */
+ if (unlikely(skb_headroom(skb) < RTW89_RADIOTAP_ROOM + NET_SKB_PAD))
+ return;
+
if (rx_status->encoding == RX_ENC_VHT)
rtw89_core_update_radiotap_vht(rtwdev, skb, rx_status, phy_ppdu);
else if (rx_status->encoding == RX_ENC_HE)