To protect the opcode we add a check for sta->uploaded.

This is done to prevent a situation where the function gets
called from userspace for example, before sta is uploaded
to driver, causing a crash.

Also, change headers to comply with the change, wherever the
function was called.

Signed-off-by: Maxim Altshul <[email protected]>
---
 net/mac80211/driver-ops.h | 8 ++++----
 net/mac80211/sta_info.c   | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 1f75195..ec4a690 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -1075,13 +1075,13 @@ static inline void drv_leave_ibss(struct 
ieee80211_local *local,
 }
 
 static inline u32 drv_get_expected_throughput(struct ieee80211_local *local,
-                                             struct ieee80211_sta *sta)
+                                             struct sta_info *sta)
 {
        u32 ret = 0;
 
-       trace_drv_get_expected_throughput(sta);
-       if (local->ops->get_expected_throughput)
-               ret = local->ops->get_expected_throughput(&local->hw, sta);
+       trace_drv_get_expected_throughput(&sta->sta);
+       if (local->ops->get_expected_throughput && sta->uploaded)
+               ret = local->ops->get_expected_throughput(&local->hw, 
&sta->sta);
        trace_drv_return_u32(local, ret);
 
        return ret;
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 8860c6c..6624577 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -2108,7 +2108,7 @@ u32 sta_get_expected_throughput(struct sta_info *sta)
        if (ref && ref->ops->get_expected_throughput)
                thr = ref->ops->get_expected_throughput(sta->rate_ctrl_priv);
        else
-               thr = drv_get_expected_throughput(local, &sta->sta);
+               thr = drv_get_expected_throughput(local, sta);
 
        return thr;
 }
-- 
2.9.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to