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@xxxxxxxxx> Looks correct to me. Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> 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:
signature.asc
Description: This is a digitally signed message part