summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-07-22 21:00:26 +0200
committerJohannes Berg <johannes.berg@intel.com>2014-07-22 22:17:17 +0200
commitfa8f136fe9a8fbdcb11a1db94f30146cae6d8777 (patch)
tree650a5ff1eb3b7b02f19ce8d652004f222a18d0a3
parent8c26d458394be44e135d1c6bd4557e1c4e1a0535 (diff)
downloadop-kernel-dev-fa8f136fe9a8fbdcb11a1db94f30146cae6d8777.zip
op-kernel-dev-fa8f136fe9a8fbdcb11a1db94f30146cae6d8777.tar.gz
mac80211: fix crash on getting sta info with uninitialized rate control
If the expected throughput is queried before rate control has been initialized, the minstrel op for it will crash while trying to access the rate table. Check for WLAN_STA_RATE_CONTROL before attempting to use the rate control op. Reported-by: Jean-Pierre Tosoni <jp.tosoni@acksys.fr> Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/cfg.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index d7513a5..592f4b1 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -472,12 +472,15 @@ static void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo)
{
struct ieee80211_sub_if_data *sdata = sta->sdata;
struct ieee80211_local *local = sdata->local;
- struct rate_control_ref *ref = local->rate_ctrl;
+ struct rate_control_ref *ref = NULL;
struct timespec uptime;
u64 packets = 0;
u32 thr = 0;
int i, ac;
+ if (test_sta_flag(sta, WLAN_STA_RATE_CONTROL))
+ ref = local->rate_ctrl;
+
sinfo->generation = sdata->local->sta_generation;
sinfo->filled = STATION_INFO_INACTIVE_TIME |
OpenPOWER on IntegriCloud