diff options
author | Jouni Malinen | 2005-10-03 02:19:00 +0200 |
---|---|---|
committer | Jeff Garzik | 2005-10-04 04:00:08 +0200 |
commit | c355184cd3cd58c9ffc78f2a17e0ac3563312ea7 (patch) | |
tree | f6de150b08f98540bf660cedffd77785ce75b479 /drivers/net/wireless/hostap/hostap_plx.c | |
parent | [PATCH] hostap: Fix hostap_pci build with PRISM2_IO_DEBUG (diff) | |
download | kernel-qcow2-linux-c355184cd3cd58c9ffc78f2a17e0ac3563312ea7.tar.gz kernel-qcow2-linux-c355184cd3cd58c9ffc78f2a17e0ac3563312ea7.tar.xz kernel-qcow2-linux-c355184cd3cd58c9ffc78f2a17e0ac3563312ea7.zip |
[PATCH] hostap: Do not free local->hw_priv before unregistering netdev
local->hw_priv was being freed and set to NULL just before calling
prism2_free_local_data(). However, this may expose a race condition in
which something ends up trying to use hw_priv during shutdown. I
haven't noticed this happening, but better be safe than sorry, so
let's postpone hw_priv freeing to happen only after
prism2_free_local_data() has returned.
Signed-off-by: Jouni Malinen <jkmaline@cc.hut.fi>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_plx.c')
-rw-r--r-- | drivers/net/wireless/hostap/hostap_plx.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/net/wireless/hostap/hostap_plx.c b/drivers/net/wireless/hostap/hostap_plx.c index 85d3f8a29539..78d67b408b2f 100644 --- a/drivers/net/wireless/hostap/hostap_plx.c +++ b/drivers/net/wireless/hostap/hostap_plx.c @@ -568,10 +568,8 @@ static int prism2_plx_probe(struct pci_dev *pdev, return hostap_hw_ready(dev); fail: - kfree(hw_priv); - if (local) - local->hw_priv = NULL; prism2_free_local_data(dev); + kfree(hw_priv); if (irq_registered && dev) free_irq(dev->irq, dev); @@ -604,9 +602,8 @@ static void prism2_plx_remove(struct pci_dev *pdev) if (dev->irq) free_irq(dev->irq, dev); - kfree(iface->local->hw_priv); - iface->local->hw_priv = NULL; prism2_free_local_data(dev); + kfree(hw_priv); pci_disable_device(pdev); } |