aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rndis_wlan.c
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2011-10-28 01:05:58 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-11-09 16:00:59 -0500
commita64e2e2354679ad1742b4c43ac665ffa075ef8a0 (patch)
tree101f571b97050821a8e77954723fdf2d5415cefa /drivers/net/wireless/rndis_wlan.c
parentef100682814c429709f0904b757595e25019cb31 (diff)
rndis_wlan: release BSS structures returned by cfg80211_inform_bss()
Patch fixes rndis_wlan to release referenced BSS structure returned by cfg80211_inform_bss(). Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rndis_wlan.c')
-rw-r--r--drivers/net/wireless/rndis_wlan.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 83f3e5282aea..620e3c0e88e0 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -1976,11 +1976,12 @@ static int rndis_scan(struct wiphy *wiphy, struct net_device *dev,
1976 return ret; 1976 return ret;
1977} 1977}
1978 1978
1979static struct cfg80211_bss *rndis_bss_info_update(struct usbnet *usbdev, 1979static bool rndis_bss_info_update(struct usbnet *usbdev,
1980 struct ndis_80211_bssid_ex *bssid) 1980 struct ndis_80211_bssid_ex *bssid)
1981{ 1981{
1982 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev); 1982 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1983 struct ieee80211_channel *channel; 1983 struct ieee80211_channel *channel;
1984 struct cfg80211_bss *bss;
1984 s32 signal; 1985 s32 signal;
1985 u64 timestamp; 1986 u64 timestamp;
1986 u16 capability; 1987 u16 capability;
@@ -2019,9 +2020,12 @@ static struct cfg80211_bss *rndis_bss_info_update(struct usbnet *usbdev,
2019 capability = le16_to_cpu(fixed->capabilities); 2020 capability = le16_to_cpu(fixed->capabilities);
2020 beacon_interval = le16_to_cpu(fixed->beacon_interval); 2021 beacon_interval = le16_to_cpu(fixed->beacon_interval);
2021 2022
2022 return cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid->mac, 2023 bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid->mac,
2023 timestamp, capability, beacon_interval, ie, ie_len, signal, 2024 timestamp, capability, beacon_interval, ie, ie_len, signal,
2024 GFP_KERNEL); 2025 GFP_KERNEL);
2026 cfg80211_put_bss(bss);
2027
2028 return (bss != NULL);
2025} 2029}
2026 2030
2027static struct ndis_80211_bssid_ex *next_bssid_list_item( 2031static struct ndis_80211_bssid_ex *next_bssid_list_item(
@@ -2648,6 +2652,7 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
2648 struct ieee80211_channel *channel; 2652 struct ieee80211_channel *channel;
2649 struct ndis_80211_conf config; 2653 struct ndis_80211_conf config;
2650 struct ndis_80211_ssid ssid; 2654 struct ndis_80211_ssid ssid;
2655 struct cfg80211_bss *bss;
2651 s32 signal; 2656 s32 signal;
2652 u64 timestamp; 2657 u64 timestamp;
2653 u16 capability; 2658 u16 capability;
@@ -2721,9 +2726,10 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
2721 bssid, (u32)timestamp, capability, beacon_interval, ie_len, 2726 bssid, (u32)timestamp, capability, beacon_interval, ie_len,
2722 ssid.essid, signal); 2727 ssid.essid, signal);
2723 2728
2724 cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid, 2729 bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid,
2725 timestamp, capability, beacon_interval, ie_buf, ie_len, 2730 timestamp, capability, beacon_interval, ie_buf, ie_len,
2726 signal, GFP_KERNEL); 2731 signal, GFP_KERNEL);
2732 cfg80211_put_bss(bss);
2727} 2733}
2728 2734
2729/* 2735/*