diff mbox

ALSA: azt3328: Remove unnecessary synchronize_irq() before free_irq()

Message ID 1448103682-17172-1-git-send-email-lars@metafoo.de (mailing list archive)
State New, archived
Headers show

Commit Message

Lars-Peter Clausen Nov. 21, 2015, 11:01 a.m. UTC
Calling synchronize_irq() right before free_irq() is quite useless. On one
hand the IRQ can easily fire again before free_irq() is entered, on the
other hand free_irq() itself calls synchronize_irq() internally (in a race
condition free way) before any state associated with the IRQ is freed.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/pci/azt3328.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Takashi Iwai Nov. 21, 2015, 4:40 p.m. UTC | #1
On Sat, 21 Nov 2015 12:01:22 +0100,
Lars-Peter Clausen wrote:
> 
> Calling synchronize_irq() right before free_irq() is quite useless. On one
> hand the IRQ can easily fire again before free_irq() is entered, on the
> other hand free_irq() itself calls synchronize_irq() internally (in a race
> condition free way) before any state associated with the IRQ is freed.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Applied, thanks.


Takashi

> ---
>  sound/pci/azt3328.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c
> index 07a4acc..5e2ef0b 100644
> --- a/sound/pci/azt3328.c
> +++ b/sound/pci/azt3328.c
> @@ -2294,8 +2294,6 @@ snd_azf3328_free(struct snd_azf3328 *chip)
>  	snd_azf3328_timer_stop(chip->timer);
>  	snd_azf3328_gameport_free(chip);
>  
> -	if (chip->irq >= 0)
> -		synchronize_irq(chip->irq);
>  __end_hw:
>  	if (chip->irq >= 0)
>  		free_irq(chip->irq, chip);
> -- 
> 2.1.4
> 
>
diff mbox

Patch

diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c
index 07a4acc..5e2ef0b 100644
--- a/sound/pci/azt3328.c
+++ b/sound/pci/azt3328.c
@@ -2294,8 +2294,6 @@  snd_azf3328_free(struct snd_azf3328 *chip)
 	snd_azf3328_timer_stop(chip->timer);
 	snd_azf3328_gameport_free(chip);
 
-	if (chip->irq >= 0)
-		synchronize_irq(chip->irq);
 __end_hw:
 	if (chip->irq >= 0)
 		free_irq(chip->irq, chip);