diff options
-rw-r--r-- | net/mac80211/mlme.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index df12e746b03e..0abd5a4fe38d 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -2612,13 +2612,12 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata, | |||
2612 | mesh_peer_accepts_plinks(elems)); | 2612 | mesh_peer_accepts_plinks(elems)); |
2613 | } | 2613 | } |
2614 | 2614 | ||
2615 | rcu_read_lock(); | ||
2616 | |||
2617 | if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS && elems->supp_rates && | 2615 | if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS && elems->supp_rates && |
2618 | memcmp(mgmt->bssid, sdata->u.sta.bssid, ETH_ALEN) == 0) { | 2616 | memcmp(mgmt->bssid, sdata->u.sta.bssid, ETH_ALEN) == 0) { |
2619 | |||
2620 | supp_rates = ieee80211_sta_get_rates(local, elems, band); | 2617 | supp_rates = ieee80211_sta_get_rates(local, elems, band); |
2621 | 2618 | ||
2619 | rcu_read_lock(); | ||
2620 | |||
2622 | sta = sta_info_get(local, mgmt->sa); | 2621 | sta = sta_info_get(local, mgmt->sa); |
2623 | if (sta) { | 2622 | if (sta) { |
2624 | u64 prev_rates; | 2623 | u64 prev_rates; |
@@ -2642,9 +2641,9 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata, | |||
2642 | ieee80211_ibss_add_sta(sdata, NULL, mgmt->bssid, | 2641 | ieee80211_ibss_add_sta(sdata, NULL, mgmt->bssid, |
2643 | mgmt->sa, supp_rates); | 2642 | mgmt->sa, supp_rates); |
2644 | } | 2643 | } |
2645 | } | ||
2646 | 2644 | ||
2647 | rcu_read_unlock(); | 2645 | rcu_read_unlock(); |
2646 | } | ||
2648 | 2647 | ||
2649 | if (elems->ds_params && elems->ds_params_len == 1) | 2648 | if (elems->ds_params && elems->ds_params_len == 1) |
2650 | freq = ieee80211_channel_to_frequency(elems->ds_params[0]); | 2649 | freq = ieee80211_channel_to_frequency(elems->ds_params[0]); |