orinoco_cs requests its irq too early. This results in irq coming in right afrer request_irq and before initializing other data structures, resulting in NULL pointer dereference on module load. Fix it by moving request_irq after other initialization tasks. Tested to work with Orinoco Gold PCMCIA card. Signed-off-by: Meelis Roos <mroos@xxxxxxxx> diff --git a/drivers/net/wireless/orinoco/orinoco_cs.c b/drivers/net/wireless/orinoco/orinoco_cs.c index 71b3d68..47fc408 100644 --- a/drivers/net/wireless/orinoco/orinoco_cs.c +++ b/drivers/net/wireless/orinoco/orinoco_cs.c @@ -151,10 +151,6 @@ orinoco_cs_config(struct pcmcia_device *link) goto failed; } - ret = pcmcia_request_irq(link, orinoco_interrupt); - if (ret) - goto failed; - /* We initialize the hermes structure before completing PCMCIA * configuration just in case the interrupt handler gets * called. */ @@ -182,6 +178,10 @@ orinoco_cs_config(struct pcmcia_device *link) goto failed; } + ret = pcmcia_request_irq(link, orinoco_interrupt); + if (ret) + goto failed; + return 0; failed: -- Meelis Roos (mroos@xxxxxxxx) -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html