Commit 2da8cbf8 authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville
Browse files

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: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarKiran Divekar <dkiran@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 07445f68
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -382,6 +382,7 @@ mwifiex_free_adapter(struct mwifiex_adapter *adapter)


	adapter->if_ops.cleanup_if(adapter);
	adapter->if_ops.cleanup_if(adapter);


	if (adapter->sleep_cfm)
		dev_kfree_skb_any(adapter->sleep_cfm);
		dev_kfree_skb_any(adapter->sleep_cfm);
}
}


+8 −4
Original line number Original line Diff line number Diff line
@@ -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;


	if (priv->wdev) {
		wiphy_unregister(priv->wdev->wiphy);
		wiphy_unregister(priv->wdev->wiphy);
		wiphy_free(priv->wdev->wiphy);
		wiphy_free(priv->wdev->wiphy);
		kfree(priv->wdev);
		kfree(priv->wdev);
	}


	mwifiex_terminate_workqueue(adapter);
	mwifiex_terminate_workqueue(adapter);