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>
 
 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);