aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJouni Malinen <jkmaline@cc.hut.fi>2005-08-28 20:53:32 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-08-31 22:48:39 -0400
commitfbff868db3a4cc6a89d51da9a6d49b26c29d04fb (patch)
tree3582ea805d0153b42979bdc8315c68607db928b6 /drivers
parenta8eef8a22232e64be76410100c52038b21bda7ed (diff)
[PATCH] hostap: Fix null pointer dereference in prism2_pccard_card_present()
local->hw_priv was initialized only after the interrupt handler was registered. This could trigger a NULL pointer dereference in prism2_pccard_card_present() that assumed that local->hw_priv is always set (and it should have been). Fix this by setting local->hw_priv before registering the interrupt handler. Signed-off-by: Jouni Malinen <jkmaline@cc.hut.fi> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/hostap/hostap_cs.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index e1f1eb8e484a..faa83badf0a1 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -772,6 +772,13 @@ static int prism2_config(dev_link_t *link)
772 goto failed; 772 goto failed;
773 link->priv = dev; 773 link->priv = dev;
774 774
775 iface = netdev_priv(dev);
776 local = iface->local;
777 local->hw_priv = hw_priv;
778 hw_priv->link = link;
779 strcpy(hw_priv->node.dev_name, dev->name);
780 link->dev = &hw_priv->node;
781
775 /* 782 /*
776 * Allocate an interrupt line. Note that this does not assign a 783 * Allocate an interrupt line. Note that this does not assign a
777 * handler to the interrupt, unless the 'Handler' member of the 784 * handler to the interrupt, unless the 'Handler' member of the
@@ -817,13 +824,6 @@ static int prism2_config(dev_link_t *link)
817 link->state |= DEV_CONFIG; 824 link->state |= DEV_CONFIG;
818 link->state &= ~DEV_CONFIG_PENDING; 825 link->state &= ~DEV_CONFIG_PENDING;
819 826
820 iface = netdev_priv(dev);
821 local = iface->local;
822 local->hw_priv = hw_priv;
823 hw_priv->link = link;
824 strcpy(hw_priv->node.dev_name, dev->name);
825 link->dev = &hw_priv->node;
826
827 local->shutdown = 0; 827 local->shutdown = 0;
828 828
829 sandisk_enable_wireless(dev); 829 sandisk_enable_wireless(dev);