Commit 202728d783a0fc180e7141d18186eeae167218a1

Authored by Adrian Bunk
Committed by Jaroslav Kysela
1 parent 3e964432f5

[ALSA] fix some memory leaks

Modules: Generic drivers,ES18xx driver,CS46xx driver

This patch fixes two memory leaks spotted by the Coverity checker.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

Showing 3 changed files with 9 additions and 3 deletions Side-by-side Diff

sound/drivers/serial-u16550.c
... ... @@ -789,6 +789,7 @@
789 789  
790 790 if ((err = snd_uart16550_detect(uart)) <= 0) {
791 791 printk(KERN_ERR "no UART detected at 0x%lx\n", iobase);
  792 + snd_uart16550_free(uart);
792 793 return -ENODEV;
793 794 }
794 795  
... ... @@ -2083,6 +2083,7 @@
2083 2083 err = pnp_activate_dev(acard->devc);
2084 2084 if (err < 0) {
2085 2085 snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n");
  2086 + kfree(cfg);
2086 2087 return -EAGAIN;
2087 2088 }
2088 2089 snd_printdd("pnp: port=0x%lx\n", pnp_port_start(acard->devc, 0));
sound/pci/cs46xx/dsp_spos.c
... ... @@ -237,7 +237,7 @@
237 237  
238 238 if (ins->symbol_table.symbols == NULL) {
239 239 cs46xx_dsp_spos_destroy(chip);
240   - return NULL;
  240 + goto error;
241 241 }
242 242  
243 243 ins->code.offset = 0;
... ... @@ -246,7 +246,7 @@
246 246  
247 247 if (ins->code.data == NULL) {
248 248 cs46xx_dsp_spos_destroy(chip);
249   - return NULL;
  249 + goto error;
250 250 }
251 251  
252 252 ins->nscb = 0;
... ... @@ -257,7 +257,7 @@
257 257  
258 258 if (ins->modules == NULL) {
259 259 cs46xx_dsp_spos_destroy(chip);
260   - return NULL;
  260 + goto error;
261 261 }
262 262  
263 263 /* default SPDIF input sample rate
... ... @@ -280,6 +280,10 @@
280 280 /* left and right validity bits */ (1 << 13) | (1 << 12);
281 281  
282 282 return ins;
  283 +
  284 +error:
  285 + kfree(ins);
  286 + return NULL;
283 287 }
284 288  
285 289 void cs46xx_dsp_spos_destroy (struct snd_cs46xx * chip)