orinoco: release BSS structures returned by cfg80211_inform_bss()
authorDavid Kilroy <kilroyd@googlemail.com>
Fri, 28 Oct 2011 11:47:56 +0000 (12:47 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 9 Nov 2011 21:00:59 +0000 (16:00 -0500)
The pointer returned by cfg80211_inform_bss is a referenced
struct. The orinoco driver does not need to keep the struct, so
we just release it.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/orinoco/scan.c

index e99ca1c..96e39ed 100644 (file)
@@ -76,6 +76,7 @@ static void orinoco_add_hostscan_result(struct orinoco_private *priv,
 {
        struct wiphy *wiphy = priv_to_wiphy(priv);
        struct ieee80211_channel *channel;
+       struct cfg80211_bss *cbss;
        u8 *ie;
        u8 ie_buf[46];
        u64 timestamp;
@@ -121,9 +122,10 @@ static void orinoco_add_hostscan_result(struct orinoco_private *priv,
        beacon_interval = le16_to_cpu(bss->a.beacon_interv);
        signal = SIGNAL_TO_MBM(le16_to_cpu(bss->a.level));
 
-       cfg80211_inform_bss(wiphy, channel, bss->a.bssid, timestamp,
-                           capability, beacon_interval, ie_buf, ie_len,
-                           signal, GFP_KERNEL);
+       cbss = cfg80211_inform_bss(wiphy, channel, bss->a.bssid, timestamp,
+                                  capability, beacon_interval, ie_buf, ie_len,
+                                  signal, GFP_KERNEL);
+       cfg80211_put_bss(cbss);
 }
 
 void orinoco_add_extscan_result(struct orinoco_private *priv,
@@ -132,6 +134,7 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
 {
        struct wiphy *wiphy = priv_to_wiphy(priv);
        struct ieee80211_channel *channel;
+       struct cfg80211_bss *cbss;
        const u8 *ie;
        u64 timestamp;
        s32 signal;
@@ -152,9 +155,10 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
        ie = bss->data;
        signal = SIGNAL_TO_MBM(bss->level);
 
-       cfg80211_inform_bss(wiphy, channel, bss->bssid, timestamp,
-                           capability, beacon_interval, ie, ie_len,
-                           signal, GFP_KERNEL);
+       cbss = cfg80211_inform_bss(wiphy, channel, bss->bssid, timestamp,
+                                  capability, beacon_interval, ie, ie_len,
+                                  signal, GFP_KERNEL);
+       cfg80211_put_bss(cbss);
 }
 
 void orinoco_add_hostscan_results(struct orinoco_private *priv,