aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2008-02-22 18:47:44 +0100
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-22 14:20:09 -0800
commit2f93d797ea92113a73c72728c475455cb1409fb3 (patch)
treeddfcb87326b1687efeeb9b7e0373d4826dd55dea
parentc6cd7d7efe2302697a3cbde718e8e3b0d88ba706 (diff)
[ALSA] bt87X: fix freeing of shared interrupt
Call free_irq() after iounmap() because other devices could trigger our shared interrupt handler. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--sound/pci/bt87x.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c
index c9a2421cf6f..4ecdd635ed1 100644
--- a/sound/pci/bt87x.c
+++ b/sound/pci/bt87x.c
@@ -681,15 +681,12 @@ static struct snd_kcontrol_new snd_bt87x_capture_source = {
static int snd_bt87x_free(struct snd_bt87x *chip)
{
- if (chip->mmio) {
+ if (chip->mmio)
snd_bt87x_stop(chip);
- if (chip->irq >= 0)
- synchronize_irq(chip->irq);
-
- iounmap(chip->mmio);
- }
if (chip->irq >= 0)
free_irq(chip->irq, chip);
+ if (chip->mmio)
+ iounmap(chip->mmio);
pci_release_regions(chip->pci);
pci_disable_device(chip->pci);
kfree(chip);