brcmfmac: free ifp for non-netdev interface in p2p module
authorArend van Spriel <arend@broadcom.com>
Wed, 10 Jun 2015 22:12:21 +0000 (00:12 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 15 Jun 2015 09:55:23 +0000 (12:55 +0300)
Making it more clear by freeing the ifp in same place where the
vif object is freed.

Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/brcm80211/brcmfmac/core.c
drivers/net/wireless/brcm80211/brcmfmac/p2p.c

index f8f47dcfa886278caf5d694bc9d7a0eadadb8ccd..8cf4a1ee6145f018894ca2fe5c0224282943da57 100644 (file)
@@ -867,8 +867,6 @@ static void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx)
                }
                /* unregister will take care of freeing it */
                unregister_netdev(ifp->ndev);
-       } else {
-               kfree(ifp);
        }
 }
 
index 710fbe570eb24da1d316c94679b0ed390bc1a29c..abcaa777c5e04a4c547f0d4e5149739e011abb20 100644 (file)
@@ -2238,6 +2238,7 @@ static void brcmf_p2p_delete_p2pdev(struct brcmf_p2p_info *p2p,
 {
        cfg80211_unregister_wdev(&vif->wdev);
        p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL;
+       kfree(vif->ifp);
        brcmf_free_vif(vif);
 }
 
@@ -2364,6 +2365,8 @@ int brcmf_p2p_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev)
                break;
 
        case NL80211_IFTYPE_P2P_DEVICE:
+               brcmf_p2p_cancel_remain_on_channel(vif->ifp);
+               brcmf_p2p_deinit_discovery(p2p);
                brcmf_p2p_delete_p2pdev(p2p, vif);
                return 0;
        default: