mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
mac80211: fix rhashtable conversion
My conversion of the mac80211 station hash table to rhashtable
completely broke the lookup in sta_info_get() as it no longer
took into account the virtual interface. Fix that.
Fixes: 7bedd0cfad
("mac80211: use rhashtable for station table")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
5eb8f4d742
commit
60f4b626d5
@ -157,8 +157,24 @@ struct sta_info *sta_info_get(struct ieee80211_sub_if_data *sdata,
|
||||
const u8 *addr)
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct sta_info *sta;
|
||||
struct rhash_head *tmp;
|
||||
const struct bucket_table *tbl;
|
||||
|
||||
return rhashtable_lookup_fast(&local->sta_hash, addr, sta_rht_params);
|
||||
rcu_read_lock();
|
||||
tbl = rht_dereference_rcu(local->sta_hash.tbl, &local->sta_hash);
|
||||
|
||||
for_each_sta_info(local, tbl, addr, sta, tmp) {
|
||||
if (sta->sdata == sdata) {
|
||||
rcu_read_unlock();
|
||||
/* this is safe as the caller must already hold
|
||||
* another rcu read section or the mutex
|
||||
*/
|
||||
return sta;
|
||||
}
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user