--- x/net/mac80211/sta_info.c +++ y/net/mac80211/sta_info.c @@ -937,7 +937,13 @@ int sta_info_insert_rcu(struct sta_info mutex_lock(&local->sta_mtx); - err = sta_info_insert_check(sta); + err = 0; + if (ether_addr_equal(sta->sta.addr, sta->sdata->vif.addr) || + !is_valid_ether_addr(sta->sta.addr)) + err = -EINVAL; + + if (!err) + err = sta_info_insert_check(sta); if (err) { sta_info_free(local, sta); mutex_unlock(&local->sta_mtx);