aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/wlan-ng/cfg80211.c
diff options
context:
space:
mode:
authorKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>2012-04-24 10:00:34 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-04-24 14:28:25 -0400
commit19f798ad009a1c9aebe6c248173e4a7ec694c680 (patch)
treede47eddffc271682ae49c16c26fbfffd999143c9 /drivers/staging/wlan-ng/cfg80211.c
parent89f5e7102a56bcd1b5b0691085d0839e92b3ca04 (diff)
staging: wlan-ng: Release struct returned by cfg80211_inform_bss to avoid potential memory leak.
Function cfg80211_inform_bss returns a pointer to a referenced struct cfg80211_bss but no information is needed from this struct in function prism2_scan and therefore we release it by calling cfg80211_put_bss. Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/wlan-ng/cfg80211.c')
-rw-r--r--drivers/staging/wlan-ng/cfg80211.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/staging/wlan-ng/cfg80211.c b/drivers/staging/wlan-ng/cfg80211.c
index 4cd3ba5d564..8bc562b8c4d 100644
--- a/drivers/staging/wlan-ng/cfg80211.c
+++ b/drivers/staging/wlan-ng/cfg80211.c
@@ -332,6 +332,7 @@ int prism2_scan(struct wiphy *wiphy, struct net_device *dev,
332 wlandevice_t *wlandev = dev->ml_priv; 332 wlandevice_t *wlandev = dev->ml_priv;
333 struct p80211msg_dot11req_scan msg1; 333 struct p80211msg_dot11req_scan msg1;
334 struct p80211msg_dot11req_scan_results msg2; 334 struct p80211msg_dot11req_scan_results msg2;
335 struct cfg80211_bss *bss;
335 int result; 336 int result;
336 int err = 0; 337 int err = 0;
337 int numbss = 0; 338 int numbss = 0;
@@ -401,7 +402,7 @@ int prism2_scan(struct wiphy *wiphy, struct net_device *dev,
401 ie_buf[1] = msg2.ssid.data.len; 402 ie_buf[1] = msg2.ssid.data.len;
402 ie_len = ie_buf[1] + 2; 403 ie_len = ie_buf[1] + 2;
403 memcpy(&ie_buf[2], &(msg2.ssid.data.data), msg2.ssid.data.len); 404 memcpy(&ie_buf[2], &(msg2.ssid.data.data), msg2.ssid.data.len);
404 cfg80211_inform_bss(wiphy, 405 bss = cfg80211_inform_bss(wiphy,
405 ieee80211_get_channel(wiphy, ieee80211_dsss_chan_to_freq(msg2.dschannel.data)), 406 ieee80211_get_channel(wiphy, ieee80211_dsss_chan_to_freq(msg2.dschannel.data)),
406 (const u8 *) &(msg2.bssid.data.data), 407 (const u8 *) &(msg2.bssid.data.data),
407 msg2.timestamp.data, msg2.capinfo.data, 408 msg2.timestamp.data, msg2.capinfo.data,
@@ -411,6 +412,13 @@ int prism2_scan(struct wiphy *wiphy, struct net_device *dev,
411 (msg2.signal.data - 65536) * 100, /* Conversion to signed type */ 412 (msg2.signal.data - 65536) * 100, /* Conversion to signed type */
412 GFP_KERNEL 413 GFP_KERNEL
413 ); 414 );
415
416 if (!bss) {
417 err = -ENOMEM;
418 goto exit;
419 }
420
421 cfg80211_put_bss(bss);
414 } 422 }
415 423
416 if (result) 424 if (result)