Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH 1/1] mac80211: fix ieee80211_rx_bss_put/get imbalance
@ 2008-05-21 15:17 Tomas Winkler
  2008-05-21 15:37 ` Johannes Berg
  0 siblings, 1 reply; 2+ messages in thread
From: Tomas Winkler @ 2008-05-21 15:17 UTC (permalink / raw)
  To: linville, johannes, yi.zhu; +Cc: linux-wireless, Tomas Winkler

This patch fixes iee80211_rx_bss_put/get imbalance
introduced by 'mac80211: enable IBSS merging' patch.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
 net/mac80211/mlme.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 7cfd12e..0ef5993 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2479,8 +2479,6 @@ static int ieee80211_sta_join_ibss(struct net_device *dev,
 	ifsta->state = IEEE80211_IBSS_JOINED;
 	mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL);
 
-	ieee80211_rx_bss_put(dev, bss);
-
 	return res;
 }
 
@@ -3523,6 +3521,7 @@ static int ieee80211_sta_create_ibss(struct net_device *dev,
 	struct ieee80211_supported_band *sband;
 	u8 bssid[ETH_ALEN], *pos;
 	int i;
+	int ret;
 	DECLARE_MAC_BUF(mac);
 
 #if 0
@@ -3567,7 +3566,9 @@ static int ieee80211_sta_create_ibss(struct net_device *dev,
 		*pos++ = (u8) (rate / 5);
 	}
 
-	return ieee80211_sta_join_ibss(dev, ifsta, bss);
+	ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
+	ieee80211_rx_bss_put(dev, bss);
+	return ret;
 }
 
 
@@ -3615,10 +3616,13 @@ static int ieee80211_sta_find_ibss(struct net_device *dev,
 	    (bss = ieee80211_rx_bss_get(dev, bssid,
 					local->hw.conf.channel->center_freq,
 					ifsta->ssid, ifsta->ssid_len))) {
+		int ret;
 		printk(KERN_DEBUG "%s: Selected IBSS BSSID %s"
 		       " based on configured SSID\n",
 		       dev->name, print_mac(mac, bssid));
-		return ieee80211_sta_join_ibss(dev, ifsta, bss);
+		ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
+		ieee80211_rx_bss_put(dev, bss);
+		return ret;
 	}
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
 	printk(KERN_DEBUG "   did not try to join ibss\n");
-- 
1.5.4.1

---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/1] mac80211: fix ieee80211_rx_bss_put/get imbalance
  2008-05-21 15:17 [PATCH 1/1] mac80211: fix ieee80211_rx_bss_put/get imbalance Tomas Winkler
@ 2008-05-21 15:37 ` Johannes Berg
  0 siblings, 0 replies; 2+ messages in thread
From: Johannes Berg @ 2008-05-21 15:37 UTC (permalink / raw)
  To: Tomas Winkler; +Cc: linville, yi.zhu, linux-wireless

[-- Attachment #1: Type: text/plain, Size: 2087 bytes --]

On Wed, 2008-05-21 at 18:17 +0300, Tomas Winkler wrote:
> This patch fixes iee80211_rx_bss_put/get imbalance
> introduced by 'mac80211: enable IBSS merging' patch.
> 
> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>

Looks correct to me.

Acked-by: Johannes Berg <johannes@sipsolutions.net>

John, when will you start merging real work again? :)


> ---
>  net/mac80211/mlme.c |   12 ++++++++----
>  1 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 7cfd12e..0ef5993 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -2479,8 +2479,6 @@ static int ieee80211_sta_join_ibss(struct net_device *dev,
>  	ifsta->state = IEEE80211_IBSS_JOINED;
>  	mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL);
>  
> -	ieee80211_rx_bss_put(dev, bss);
> -
>  	return res;
>  }
>  
> @@ -3523,6 +3521,7 @@ static int ieee80211_sta_create_ibss(struct net_device *dev,
>  	struct ieee80211_supported_band *sband;
>  	u8 bssid[ETH_ALEN], *pos;
>  	int i;
> +	int ret;
>  	DECLARE_MAC_BUF(mac);
>  
>  #if 0
> @@ -3567,7 +3566,9 @@ static int ieee80211_sta_create_ibss(struct net_device *dev,
>  		*pos++ = (u8) (rate / 5);
>  	}
>  
> -	return ieee80211_sta_join_ibss(dev, ifsta, bss);
> +	ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
> +	ieee80211_rx_bss_put(dev, bss);
> +	return ret;
>  }
>  
> 
> @@ -3615,10 +3616,13 @@ static int ieee80211_sta_find_ibss(struct net_device *dev,
>  	    (bss = ieee80211_rx_bss_get(dev, bssid,
>  					local->hw.conf.channel->center_freq,
>  					ifsta->ssid, ifsta->ssid_len))) {
> +		int ret;
>  		printk(KERN_DEBUG "%s: Selected IBSS BSSID %s"
>  		       " based on configured SSID\n",
>  		       dev->name, print_mac(mac, bssid));
> -		return ieee80211_sta_join_ibss(dev, ifsta, bss);
> +		ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
> +		ieee80211_rx_bss_put(dev, bss);
> +		return ret;
>  	}
>  #ifdef CONFIG_MAC80211_IBSS_DEBUG
>  	printk(KERN_DEBUG "   did not try to join ibss\n");

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-05-21 15:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-21 15:17 [PATCH 1/1] mac80211: fix ieee80211_rx_bss_put/get imbalance Tomas Winkler
2008-05-21 15:37 ` Johannes Berg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox