[ALSA] fix some memory leaks
authorAdrian Bunk <bunk@stusta.de>
Thu, 14 Dec 2006 23:25:52 +0000 (00:25 +0100)
committerAdrian Bunk <bunk@stusta.de>
Thu, 14 Dec 2006 23:25:52 +0000 (00:25 +0100)
This patch fixes two memory leaks spotted by the Coverity checker.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
sound/isa/es18xx.c
sound/pci/cs46xx/dsp_spos.c

index 08f032b51107169db3e508efb07cec1ff55dc6f1..7a12848a7b05d68565c493ce4c44d76936834113 100644 (file)
@@ -1927,6 +1927,7 @@ static int __devinit snd_audiodrive_pnp(int dev, struct snd_audiodrive *acard,
        err = pnp_activate_dev(acard->devc);
        if (err < 0) {
                snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n");
+               kfree(cfg);
                return -EAGAIN;
        }
        snd_printdd("pnp: port=0x%lx\n", pnp_port_start(acard->devc, 0));
index 445a448949e7386fa5553ebdde137433318fc15f..81bcae073bc0334c631380bb9112dfe72dd83fa7 100644 (file)
@@ -235,7 +235,7 @@ struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip)
 
        if (ins->symbol_table.symbols == NULL) {
                cs46xx_dsp_spos_destroy(chip);
-               return NULL;
+               goto error;
        }
 
        ins->code.offset = 0;
@@ -244,7 +244,7 @@ struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip)
 
        if (ins->code.data == NULL) {
                cs46xx_dsp_spos_destroy(chip);
-               return NULL;
+               goto error;
        }
 
        ins->nscb = 0;
@@ -255,7 +255,7 @@ struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip)
 
        if (ins->modules == NULL) {
                cs46xx_dsp_spos_destroy(chip);
-               return NULL;
+               goto error;
        }
 
        /* default SPDIF input sample rate
@@ -278,6 +278,10 @@ struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip)
         /* left and right validity bits */ (1 << 13) | (1 << 12);
 
        return ins;
+
+error:
+       kfree(ins);
+       return NULL;
 }
 
 void  cs46xx_dsp_spos_destroy (struct snd_cs46xx * chip)