iwlwifi: mvm: Drop large non sta frames
authorAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Mon, 15 Apr 2019 13:45:04 +0000 (16:45 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Sat, 29 Jun 2019 07:09:41 +0000 (10:09 +0300)
In some buggy scenarios we could possible attempt to transmit frames larger
than maximum MSDU size. Since our devices don't know how to handle this,
it may result in asserts, hangs etc.
This can happen, for example, when we receive a large multicast frame
and try to transmit it back to the air in AP mode.
Since in a legal scenario this should never happen, drop such frames and
warn about it.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index 16f7458..a3e5d88 100644 (file)
@@ -726,6 +726,9 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
 
        memcpy(&info, skb->cb, sizeof(info));
 
+       if (WARN_ON_ONCE(skb->len > IEEE80211_MAX_DATA_LEN + hdrlen))
+               return -1;
+
        if (WARN_ON_ONCE(info.flags & IEEE80211_TX_CTL_AMPDU))
                return -1;