|
@@ -372,6 +372,9 @@ int mesh_plink_open(struct sta_info *sta)
|
|
|
__le16 llid;
|
|
|
struct ieee80211_sub_if_data *sdata = sta->sdata;
|
|
|
|
|
|
+ if (!test_sta_flags(sta, WLAN_STA_AUTH))
|
|
|
+ return -EPERM;
|
|
|
+
|
|
|
spin_lock_bh(&sta->lock);
|
|
|
get_random_bytes(&llid, 2);
|
|
|
sta->llid = llid;
|
|
@@ -484,6 +487,12 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ if (sta && !test_sta_flags(sta, WLAN_STA_AUTH)) {
|
|
|
+ mpl_dbg("Mesh plink: Action frame from non-authed peer\n");
|
|
|
+ rcu_read_unlock();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (sta && sta->plink_state == PLINK_BLOCKED) {
|
|
|
rcu_read_unlock();
|
|
|
return;
|