mwifiex: add NULL checks in driver unload path
If driver load is failed, sometimes few pointers may remain uninitialized ex. priv->wdev, priv->netdev, adapter->sleep_cfm This will cause NULL pointer dereferance while unloading the driver. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Kiran Divekar <dkiran@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
07445f6882
commit
2da8cbf8a6
@@ -382,7 +382,8 @@ mwifiex_free_adapter(struct mwifiex_adapter *adapter)
|
|||||||
|
|
||||||
adapter->if_ops.cleanup_if(adapter);
|
adapter->if_ops.cleanup_if(adapter);
|
||||||
|
|
||||||
dev_kfree_skb_any(adapter->sleep_cfm);
|
if (adapter->sleep_cfm)
|
||||||
|
dev_kfree_skb_any(adapter->sleep_cfm);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -822,7 +822,9 @@ int mwifiex_remove_card(struct mwifiex_adapter *adapter, struct semaphore *sem)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
mwifiex_del_virtual_intf(priv->wdev->wiphy, priv->netdev);
|
if (priv->wdev && priv->netdev)
|
||||||
|
mwifiex_del_virtual_intf(priv->wdev->wiphy,
|
||||||
|
priv->netdev);
|
||||||
rtnl_unlock();
|
rtnl_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -830,9 +832,11 @@ int mwifiex_remove_card(struct mwifiex_adapter *adapter, struct semaphore *sem)
|
|||||||
if (!priv)
|
if (!priv)
|
||||||
goto exit_remove;
|
goto exit_remove;
|
||||||
|
|
||||||
wiphy_unregister(priv->wdev->wiphy);
|
if (priv->wdev) {
|
||||||
wiphy_free(priv->wdev->wiphy);
|
wiphy_unregister(priv->wdev->wiphy);
|
||||||
kfree(priv->wdev);
|
wiphy_free(priv->wdev->wiphy);
|
||||||
|
kfree(priv->wdev);
|
||||||
|
}
|
||||||
|
|
||||||
mwifiex_terminate_workqueue(adapter);
|
mwifiex_terminate_workqueue(adapter);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user