diff options
author | Jouni Malinen <jkmaline@cc.hut.fi> | 2005-08-28 20:53:32 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-31 22:48:39 -0400 |
commit | fbff868db3a4cc6a89d51da9a6d49b26c29d04fb (patch) | |
tree | 3582ea805d0153b42979bdc8315c68607db928b6 /drivers/net | |
parent | a8eef8a22232e64be76410100c52038b21bda7ed (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/net')
-rw-r--r-- | drivers/net/wireless/hostap/hostap_cs.c | 14 |
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); |