[PATCH] ALSA: hda/senary: Fix potential resource leak in set_beep_amp

Takashi Iwai tiwai at suse.de
Thu Nov 6 02:06:21 PST 2025


On Thu, 06 Nov 2025 07:35:46 +0100,
wangdich9700 at 163.com wrote:
> 
> From: wangdicheng <wangdich9700 at 163.com>
> 
> Add proper error handling in set_beep_amp function to avoid potential
> resource leaks when snd_hda_gen_add_kctl fails.
> 
> Signed-off-by: wangdicheng <wangdicheng at kylinos.cn>

Please align both From and Signed-off-by addresses.
And in this patch...

> ---
>  sound/hda/codecs/senarytech.c | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/hda/codecs/senarytech.c b/sound/hda/codecs/senarytech.c
> index 9aa1e9bcd9ec..99af8d5e51db 100644
> --- a/sound/hda/codecs/senarytech.c
> +++ b/sound/hda/codecs/senarytech.c
> @@ -47,17 +47,28 @@ static int set_beep_amp(struct senary_spec *spec, hda_nid_t nid,
>  {
>  	struct snd_kcontrol_new *knew;
>  	unsigned int beep_amp = HDA_COMPOSE_AMP_VAL(nid, 1, idx, dir);
> -	int i;
> +	int i, err;
>  
>  	spec->gen.beep_nid = nid;
>  	for (i = 0; i < ARRAY_SIZE(senary_beep_mixer); i++) {
>  		knew = snd_hda_gen_add_kctl(&spec->gen, NULL,
>  					    &senary_beep_mixer[i]);
> -		if (!knew)
> -			return -ENOMEM;
> +		if (!knew) {
> +			err = -ENOMEM;
> +			goto error;
> +		}
>  		knew->private_value = beep_amp;
>  	}
>  	return 0;
> +
> +error:
> +	/* Clean up any successfully added controls */
> +	while (i-- > 0) {
> +		/* The gen spec will be cleaned up in senary_remove,
> +		 * so we don't need individual cleanup here
> +		 */
> +	}
> +	return err;
>  }

So the "error handling" you added is just an empty loop.
What really does this patch "fix"?
As of this, it looks like just adding some garbage.


thanks,

Takashi



More information about the linux-arm-kernel mailing list