[alsa-devel] Kernel Oops unloading snd_ymfpci, 2.6.24

Takashi Iwai tiwai at suse.de
Thu Mar 20 12:47:48 CET 2008


At Wed, 19 Mar 2008 15:57:56 +1100,
Gerard Neil wrote:
> 
> Hi,
> 
> I'm just upgraded to kernel 2.6.24 and I'm seeing a kernel OOPS every
> time I unload the snd_ymfpci module...
> 
> Below is what I see in my log. My naive interpretation of this is that
> the system is barfing in the interrupt handler at the time it is
> trying to free the interrupt.... so maybe the interrupt hasn't been
> disabled properly before the free_irq() call? As I say, it's a naive
> interpretation.

free_irq should be called before releasing other resources.

Does the patch below work?


Takashi

---

diff -r 3ed43822fab7 sound/pci/ymfpci/ymfpci_main.c
--- a/sound/pci/ymfpci/ymfpci_main.c	Thu Mar 20 12:30:36 2008 +0100
+++ b/sound/pci/ymfpci/ymfpci_main.c	Thu Mar 20 12:53:52 2008 +0100
@@ -2249,6 +2249,8 @@ static int snd_ymfpci_free(struct snd_ym
 #ifdef CONFIG_PM
 	vfree(chip->saved_regs);
 #endif
+	if (chip->irq >= 0)
+		free_irq(chip->irq, chip);
 	release_and_free_resource(chip->mpu_res);
 	release_and_free_resource(chip->fm_res);
 	snd_ymfpci_free_gameport(chip);
@@ -2257,8 +2259,6 @@ static int snd_ymfpci_free(struct snd_ym
 	if (chip->work_ptr.area)
 		snd_dma_free_pages(&chip->work_ptr);
 	
-	if (chip->irq >= 0)
-		free_irq(chip->irq, chip);
 	release_and_free_resource(chip->res_reg_area);
 
 	pci_write_config_word(chip->pci, 0x40, chip->old_legacy_ctrl);


More information about the Alsa-devel mailing list