[alsa-devel] [PATCH] ALSA: pci: Fix memory leak in snd_ali_create
In the implementation of snd_ali_create() the memory allocated for codec is leaked in case of an error. Release codec if snd_ali_chip_init() fails.
Fixes: f9ab2b1c3ab5 ("[ALSA] ali5451 - Code clean up, irq handler fix") Signed-off-by: Navid Emamdoost navid.emamdoost@gmail.com --- sound/pci/ali5451/ali5451.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c index 6e28e381c21a..3ed07a18be4d 100644 --- a/sound/pci/ali5451/ali5451.c +++ b/sound/pci/ali5451/ali5451.c @@ -2179,6 +2179,7 @@ static int snd_ali_create(struct snd_card *card, err = snd_ali_chip_init(codec); if (err < 0) { dev_err(card->dev, "ali create: chip init error.\n"); + snd_ali_free(codec); return err; }
On Sun, 27 Oct 2019 19:30:27 +0100, Navid Emamdoost wrote:
In the implementation of snd_ali_create() the memory allocated for codec is leaked in case of an error. Release codec if snd_ali_chip_init() fails.
Once again, this is a wrong fix. The code path is after snd_device_new() with the free op, so the object gets already released there.
thanks,
Takashi
Fixes: f9ab2b1c3ab5 ("[ALSA] ali5451 - Code clean up, irq handler fix") Signed-off-by: Navid Emamdoost navid.emamdoost@gmail.com
sound/pci/ali5451/ali5451.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c index 6e28e381c21a..3ed07a18be4d 100644 --- a/sound/pci/ali5451/ali5451.c +++ b/sound/pci/ali5451/ali5451.c @@ -2179,6 +2179,7 @@ static int snd_ali_create(struct snd_card *card, err = snd_ali_chip_init(codec); if (err < 0) { dev_err(card->dev, "ali create: chip init error.\n");
return err; }snd_ali_free(codec);
-- 2.17.1
participants (2)
-
Navid Emamdoost
-
Takashi Iwai