mISDN: Fix memory leak in dsp_hwec_enable()

[ Upstream commit 0704a3da7ce50f972e898bbda88d2692a22922d9 ]

dsp_hwec_enable() allocates dup pointer by kstrdup(arg),
but then it updates dup variable by strsep(&dup, ",").
As a result when it calls kfree(dup), the dup variable may be
a modified pointer that no longer points to the original allocated
memory, causing a memory leak.

The issue is the same pattern as fixed in commit c6a502c229
("mISDN: Fix memory leak in dsp_pipeline_build()").

Fixes: 9a43816182 ("mISDN: Remove VLAs")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250828081457.36061-1-linmq006@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Miaoqian Lin 2025-08-28 16:14:57 +08:00 committed by Greg Kroah-Hartman
parent 1079c10293
commit e96d08ddbc

View File

@ -51,14 +51,14 @@ void dsp_hwec_enable(struct dsp *dsp, const char *arg)
goto _do; goto _do;
{ {
char *dup, *tok, *name, *val; char *dup, *next, *tok, *name, *val;
int tmp; int tmp;
dup = kstrdup(arg, GFP_ATOMIC); dup = next = kstrdup(arg, GFP_ATOMIC);
if (!dup) if (!dup)
return; return;
while ((tok = strsep(&dup, ","))) { while ((tok = strsep(&next, ","))) {
if (!strlen(tok)) if (!strlen(tok))
continue; continue;
name = strsep(&tok, "="); name = strsep(&tok, "=");