• Sven Eckelmann's avatar
    ath11k: Don't cast ath11k_skb_cb to ieee80211_tx_info.control · f4d291b4
    Sven Eckelmann authored
    The driver_data area of ieee80211_tx_info is used in ath11k for
    ath11k_skb_cb. The first function in the TX patch which rewrites it to
    ath11k_skb_cb is already ath11k_mac_op_tx. No one else in the code path
    must use it for something else before it reinitializes it. Otherwise the
    data has to be considered uninitialized or corrupt.
    
    But the ieee80211_tx_info.control shares exactly the same area as
    ieee80211_tx_info.driver_data and ath11k is still using it. This results in
    best case in a
    
      ath11k c000000.wifi1: no vif found for mgmt frame, flags 0x0
    
    or (slightly worse) in a kernel oops.
    
    Instead, the interesting data must be moved first into the ath11k_skb_cb
    and ieee80211_tx_info.control must then not be used anymore.
    
    Tested-on: IPQ8074 hw2.0 WLAN.HK.2.4.0.1.r1-00026-QCAHKSWPL_SILICONZ-2
    
    Fixes: d5c65159 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20201119154235.263250-1-sven@narfation.org
    f4d291b4
mac.c 170 KB