staging: wfx: reduce hold duration of cfg80211_bss
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Fri, 10 Apr 2020 13:32:22 +0000 (15:32 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Apr 2020 12:42:35 +0000 (14:42 +0200)
Pointer to cfg80211_bss is held during all duration of wfx_do_join. But,
it is not necessary, We can release it far earlier.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200410133239.438347-3-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/sta.c

index 380e531..c65d464 100644 (file)
@@ -509,6 +509,7 @@ static void wfx_do_join(struct wfx_vif *wvif)
                hif_set_block_ack_policy(wvif, 0xFF, 0xFF);
 
        wfx_set_mfp(wvif, bss);
+       cfg80211_put_bss(wvif->wdev->hw->wiphy, bss);
 
        ret = hif_join(wvif, conf, wvif->channel, ssid, ssidlen);
        if (ret) {
@@ -538,8 +539,6 @@ static void wfx_do_join(struct wfx_vif *wvif)
        wfx_update_filtering(wvif);
 
        mutex_unlock(&wvif->wdev->conf_mutex);
-       if (bss)
-               cfg80211_put_bss(wvif->wdev->hw->wiphy, bss);
 }
 
 static void wfx_unjoin_work(struct work_struct *work)