[PATCH] ALSA: echoaudio: Fix memory leak in snd_echo_resume()
When restore_dsp_rettings() fails, chip should be freed just like when init_hw() and request_irq() fails.
Fixes: 47b5d028fdce8 ("ALSA: Echoaudio - Add suspend support #2") Signed-off-by: Dinghao Liu dinghao.liu@zju.edu.cn --- sound/pci/echoaudio/echoaudio.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c index 6aeb99aa2414..2aa183fe5dc1 100644 --- a/sound/pci/echoaudio/echoaudio.c +++ b/sound/pci/echoaudio/echoaudio.c @@ -2226,6 +2226,7 @@ static int snd_echo_resume(struct device *dev) chip->pipe_alloc_mask = pipe_alloc_mask; if (err < 0) { kfree(commpage_bak); + snd_echo_free(chip); return err; }
On Mon, 10 Aug 2020 08:14:58 +0200, Dinghao Liu wrote:
When restore_dsp_rettings() fails, chip should be freed just like when init_hw() and request_irq() fails.
Fixes: 47b5d028fdce8 ("ALSA: Echoaudio - Add suspend support #2") Signed-off-by: Dinghao Liu dinghao.liu@zju.edu.cn
Actually it's rather wrong to call snd_echo_free() in the resume error path. This may lead to an Oops at the next time the system goes to resume. That said, we should drop snd_echo_free() calls in other error paths in snd_echo_resume() instead.
thanks,
Takashi
sound/pci/echoaudio/echoaudio.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c index 6aeb99aa2414..2aa183fe5dc1 100644 --- a/sound/pci/echoaudio/echoaudio.c +++ b/sound/pci/echoaudio/echoaudio.c @@ -2226,6 +2226,7 @@ static int snd_echo_resume(struct device *dev) chip->pipe_alloc_mask = pipe_alloc_mask; if (err < 0) { kfree(commpage_bak);
return err; }snd_echo_free(chip);
-- 2.17.1
On Mon, 10 Aug 2020 08:14:58 +0200, Dinghao Liu wrote:
When restore_dsp_rettings() fails, chip should be freed just like when init_hw() and request_irq() fails.
Fixes: 47b5d028fdce8 ("ALSA: Echoaudio - Add suspend support #2") Signed-off-by: Dinghao Liu dinghao.liu@zju.edu.cn
Actually it's rather wrong to call snd_echo_free() in the resume error path. This may lead to an Oops at the next time the system goes to resume. That said, we should drop snd_echo_free() calls in other error paths in snd_echo_resume() instead.
Thank you for your advice! I will send a new patch to fix this soon.
Regards, Dinghao
participants (3)
-
Dinghao Liu
-
dinghao.liu@zju.edu.cn
-
Takashi Iwai