• L
    iwlwifi: mvm: check if mac80211_queue is valid in iwl_mvm_disable_txq · 9a233bb8
    Luca Coelho 提交于
    Sometimes iwl_mvm_disable_txq() may be called with mac80211_queue ==
    IEEE80211_INVAL_HW_QUEUE, and this would cause us to use BIT(0xFF)
    which is way too large for the u16 we used to store it in
    hw_queue_to_mac820211.  If this happens the following UBSAN warning
    will be generated:
    
    [  167.185167] UBSAN: Undefined behaviour in drivers/net/wireless/intel/iwlwifi/mvm/utils.c:838:5
    [  167.185171] shift exponent 255 is too large for 64-bit type 'long unsigned int'
    
    Fix that by checking that it is not IEEE80211_INVAL_HW_QUEUE and,
    while at it, add a warning if the queue number is larger than
    IEEE80211_MAX_QUEUES.
    
    Fixes: 34e10860 ("iwlwifi: mvm: remove references to queue_info in new TX path")
    Reported-by: NPaul Menzel <pmenzel+linux-wireless@molgen.mpg.de>
    Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
    9a233bb8
utils.c 42.1 KB