From: Ilan Peer <ilan.p...@intel.com>

Upstream commit e19ebcab01cc130fa832764d453b263460ec3b91.

It is possible that the BSS context is not active (for example
when the current mode is set to GO), or that the vif->type is
different than station. In such a case we cannot
call mac80211 to report the average rssi for the interface
(the function assumes that the vif is valid and that the type
is station).

Reviewed-by: Emmanuel Grumbach <emmanuel.grumb...@intel.com>
Signed-off-by: Ilan Peer <ilan.p...@intel.com>
Signed-off-by: Johannes Berg <johannes.b...@intel.com>
---
This patch narrowly missed 3.5 but is needed there to fix a crash, see
e.g. https://bugzilla.kernel.org/show_bug.cgi?id=45481

 drivers/net/wireless/iwlwifi/iwl-agn-lib.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c 
b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index e55ec6c..c31072d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -617,6 +617,11 @@ static bool iwlagn_fill_txpower_mode(struct iwl_priv *priv,
        struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS];
        int ave_rssi;
 
+       if (!ctx->vif || (ctx->vif->type != NL80211_IFTYPE_STATION)) {
+               IWL_DEBUG_INFO(priv, "BSS ctx not active or not in sta mode\n");
+               return false;
+       }
+
        ave_rssi = ieee80211_ave_rssi(ctx->vif);
        if (!ave_rssi) {
                /* no rssi data, no changes to reduce tx power */
-- 
1.7.10.4



--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to