mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +00:00
mwifiex: fix potential mem leak in .del_virtual_intf
1) Currently we freeing wdev for each interface in driver unload path. We may leak memory if user have already deleted an interface. mwifiex_add_virtual_intf() allocates wdev structure. So it should be freed in mwifiex_del_virtual_intf(). This will make sure that wdev will be freed when user deletes an interface and also in unload path. 2) "priv->netdev->ieee80211_ptr" should also be cleared in mwifiex_del_virtual_intf. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
d1af2943da
commit
98a4635bba
2 changed files with 3 additions and 6 deletions
|
@ -2310,7 +2310,10 @@ int mwifiex_del_virtual_intf(struct wiphy *wiphy, struct wireless_dev *wdev)
|
||||||
unregister_netdevice(wdev->netdev);
|
unregister_netdevice(wdev->netdev);
|
||||||
|
|
||||||
/* Clear the priv in adapter */
|
/* Clear the priv in adapter */
|
||||||
|
priv->netdev->ieee80211_ptr = NULL;
|
||||||
priv->netdev = NULL;
|
priv->netdev = NULL;
|
||||||
|
kfree(wdev);
|
||||||
|
priv->wdev = NULL;
|
||||||
|
|
||||||
priv->media_connected = false;
|
priv->media_connected = false;
|
||||||
|
|
||||||
|
|
|
@ -998,12 +998,6 @@ int mwifiex_remove_card(struct mwifiex_adapter *adapter, struct semaphore *sem)
|
||||||
wiphy_unregister(priv->wdev->wiphy);
|
wiphy_unregister(priv->wdev->wiphy);
|
||||||
wiphy_free(priv->wdev->wiphy);
|
wiphy_free(priv->wdev->wiphy);
|
||||||
|
|
||||||
for (i = 0; i < adapter->priv_num; i++) {
|
|
||||||
priv = adapter->priv[i];
|
|
||||||
if (priv)
|
|
||||||
kfree(priv->wdev);
|
|
||||||
}
|
|
||||||
|
|
||||||
mwifiex_terminate_workqueue(adapter);
|
mwifiex_terminate_workqueue(adapter);
|
||||||
|
|
||||||
/* Unregister device */
|
/* Unregister device */
|
||||||
|
|
Loading…
Reference in a new issue