This patch doesn't apply to the .36 stable tree If someone wants it applied there, please email the backport to [email protected]
thanks, greg k-h > commit: 229bd792be0bad245b78ed8f119952733a4752e5 > From: David Kilroy <[email protected]> > Date: Tue, 7 Dec 2010 18:50:42 +0000 > Subject: [PATCH] orinoco: initialise priv->hw before assigning the interrupt > > The interrupt handler takes a lock - but since commit bcad6e80f3f this > lock goes through an indirection specified in the hermes_t structure. > We must therefore initialise the structure before setting up the > interrupt handler. > > Fix orinoco_cs and spectrum_cs > > <https://bugzilla.kernel.org/show_bug.cgi?id=23932> > > Bisected by: Matt Domsch <[email protected]> > Signed-off by: David Kilroy <[email protected]> > Cc: [email protected] > Signed-off-by: John W. Linville <[email protected]> > --- > drivers/net/wireless/orinoco/orinoco_cs.c | 14 +++++++------- > drivers/net/wireless/orinoco/spectrum_cs.c | 14 +++++++------- > 2 files changed, 14 insertions(+), 14 deletions(-) > > diff --git a/drivers/net/wireless/orinoco/orinoco_cs.c > b/drivers/net/wireless/orinoco/orinoco_cs.c > index 71b3d68..32954c4 100644 > --- a/drivers/net/wireless/orinoco/orinoco_cs.c > +++ b/drivers/net/wireless/orinoco/orinoco_cs.c > @@ -151,20 +151,20 @@ 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. */ > mem = ioport_map(link->resource[0]->start, > resource_size(link->resource[0])); > if (!mem) > goto failed; > > + /* We initialize the hermes structure before completing PCMCIA > + * configuration just in case the interrupt handler gets > + * called. */ > hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING); > > + ret = pcmcia_request_irq(link, orinoco_interrupt); > + if (ret) > + goto failed; > + > ret = pcmcia_enable_device(link); > if (ret) > goto failed; > diff --git a/drivers/net/wireless/orinoco/spectrum_cs.c > b/drivers/net/wireless/orinoco/spectrum_cs.c > index fb859a5..db34c28 100644 > --- a/drivers/net/wireless/orinoco/spectrum_cs.c > +++ b/drivers/net/wireless/orinoco/spectrum_cs.c > @@ -214,21 +214,21 @@ spectrum_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. */ > mem = ioport_map(link->resource[0]->start, > resource_size(link->resource[0])); > if (!mem) > goto failed; > > + /* We initialize the hermes structure before completing PCMCIA > + * configuration just in case the interrupt handler gets > + * called. */ > hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING); > hw->eeprom_pda = true; > > + ret = pcmcia_request_irq(link, orinoco_interrupt); > + if (ret) > + goto failed; > + > ret = pcmcia_enable_device(link); > if (ret) > goto failed; > > _______________________________________________ > stable mailing list > [email protected] > http://linux.kernel.org/mailman/listinfo/stable _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
