]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
staging: greybus: audio: Fix possible leak free widgets in gbaudio_dapm_free_controls
authorWang Hai <wanghai38@huawei.com>
Sat, 5 Dec 2020 10:38:27 +0000 (18:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Dec 2020 14:11:09 +0000 (15:11 +0100)
In gbaudio_dapm_free_controls(), if one of the widgets is not found, an error
will be returned directly, which will cause the rest to be unable to be freed,
resulting in leak.

This patch fixes the bug. If if one of them is not found, just skip and free the others.

Fixes: 510e340efe0c ("staging: greybus: audio: Add helper APIs for dynamic audio module")
Reported-by: Hulk Robot <hulkci@huawei.com>
Reviewed-by: Vaibhav Agarwal <vaibhav.sr@gmail.com>
Signed-off-by: Wang Hai <wanghai38@huawei.com>
Link: https://lore.kernel.org/r/20201205103827.31244-1-wanghai38@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/greybus/audio_helper.c

index 237531ba60f30ea7722bc088f801011a1a861f1f..3011b8abce389d765a7e9cbf7a8fb9882a599622 100644 (file)
@@ -135,7 +135,8 @@ int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm,
                if (!w) {
                        dev_err(dapm->dev, "%s: widget not found\n",
                                widget->name);
-                       return -EINVAL;
+                       widget++;
+                       continue;
                }
                widget++;
 #ifdef CONFIG_DEBUG_FS