[alsa-devel] [PATCH 1/2] opti-93x: fix irq freeing after request_irq error

Takashi Iwai tiwai at suse.de
Mon Nov 30 11:10:57 CET 2009


At Sun, 29 Nov 2009 20:22:26 +0100,
Krzysztof Helt wrote:
> 
> From: Krzysztof Helt <krzysztof.h1 at wp.pl>
> 
> Set snd_opti->irq value to -1 if the request_irq() fails to avoid
> freeing the irq inside the snd_card_free().

Better to assign chip->irq after request_irq() succeeded.
To request_irq() and snd_wss_create(), pass just the irq local variable.


thanks,

Takashi

> 
> Signed-off-by: Krzysztof Helt <krzysztof.h1 at wp.pl>
> ---
>  sound/isa/opti9xx/opti92x-ad1848.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
> index 5cd5553..438c1da 100644
> --- a/sound/isa/opti9xx/opti92x-ad1848.c
> +++ b/sound/isa/opti9xx/opti92x-ad1848.c
> @@ -688,9 +688,9 @@ static void snd_card_opti9xx_free(struct snd_card *card)
>  	if (chip) {
>  #ifdef OPTi93X
>  		struct snd_wss *codec = chip->codec;
> -		if (codec && codec->irq > 0) {
> -			disable_irq(codec->irq);
> -			free_irq(codec->irq, codec);
> +		if (codec && chip->irq > 0) {
> +			disable_irq(chip->irq);
> +			free_irq(chip->irq, codec);
>  		}
>  #endif
>  		release_and_free_resource(chip->res_mc_base);
> @@ -767,6 +767,7 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
>  			    IRQF_DISABLED, DEV_NAME" - WSS", codec);
>  	if (error < 0) {
>  		snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", chip->irq);
> +		chip->irq = -1;
>  		return error;
>  	}
>  #endif
> -- 
> 1.6.4
> 
> 
> ----------------------------------------------------------------------
> Codziennie 11 tys. ofert pracy!
> Sprawdz: http://link.interia.pl/f2447
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list