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

Reply via email to