diff options
author | Zhu Yi <yi.zhu@intel.com> | 2009-10-15 14:50:28 +0800 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-10-30 15:50:24 -0400 |
commit | e6c5fc53d0f44a772398402ee8a1879818e42b4e (patch) | |
tree | 440f91d018016246c118d0165641e8332f648d65 /drivers/net/wireless/ipw2x00/ipw2200.c | |
parent | 63ca2d74ea4f9c7a7ac082c915609a7b224908e7 (diff) | |
download | op-kernel-dev-e6c5fc53d0f44a772398402ee8a1879818e42b4e.zip op-kernel-dev-e6c5fc53d0f44a772398402ee8a1879818e42b4e.tar.gz |
ipw2200: fix oops on missing firmware
For non-monitor interfaces, the syntax for alloc_ieee80211/free_80211
is wrong. Because alloc_ieee80211 only creates (wiphy_new) a wiphy, but
free_80211() does wiphy_unregister() also. This is only correct when
the later wiphy_register() is called successfully, which apparently
is not the case for your fw doesn't exist one.
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ipw2x00/ipw2200.c')
-rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2200.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c index 8d58e6e..04341a2a 100644 --- a/drivers/net/wireless/ipw2x00/ipw2200.c +++ b/drivers/net/wireless/ipw2x00/ipw2200.c @@ -11821,6 +11821,7 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev, if (err) { IPW_ERROR("Failed to register promiscuous network " "device (error %d).\n", err); + unregister_ieee80211(priv->ieee); unregister_netdev(priv->net_dev); goto out_remove_sysfs; } @@ -11871,6 +11872,7 @@ static void __devexit ipw_pci_remove(struct pci_dev *pdev) mutex_unlock(&priv->mutex); + unregister_ieee80211(priv->ieee); unregister_netdev(priv->net_dev); if (priv->rxq) { |