ALSA: hda/common: Use auto cleanup for temporary buffers
The release of temporary kmalloced buffers can be nicely handled via the standard __free(kfree). Only code refactoring, and no behavior change. Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20250827072916.31933-20-tiwai@suse.de
This commit is contained in:
parent
59195f13ee
commit
b0550d4c2d
|
|
@ -1858,14 +1858,14 @@ static int check_follower_present(struct hda_codec *codec,
|
|||
/* call kctl->put with the given value(s) */
|
||||
static int put_kctl_with_value(struct snd_kcontrol *kctl, int val)
|
||||
{
|
||||
struct snd_ctl_elem_value *ucontrol;
|
||||
struct snd_ctl_elem_value *ucontrol __free(kfree) = NULL;
|
||||
|
||||
ucontrol = kzalloc(sizeof(*ucontrol), GFP_KERNEL);
|
||||
if (!ucontrol)
|
||||
return -ENOMEM;
|
||||
ucontrol->value.integer.value[0] = val;
|
||||
ucontrol->value.integer.value[1] = val;
|
||||
kctl->put(kctl, ucontrol);
|
||||
kfree(ucontrol);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -299,9 +299,9 @@ static void remove_trail_spaces(char *str)
|
|||
|
||||
static int parse_hints(struct hda_codec *codec, const char *buf)
|
||||
{
|
||||
char *key, *val;
|
||||
char *key __free(kfree) = NULL;
|
||||
char *val;
|
||||
struct hda_hint *hint;
|
||||
int err = 0;
|
||||
|
||||
buf = skip_spaces(buf);
|
||||
if (!*buf || *buf == '#' || *buf == '\n')
|
||||
|
|
@ -313,10 +313,8 @@ static int parse_hints(struct hda_codec *codec, const char *buf)
|
|||
return -ENOMEM;
|
||||
/* extract key and val */
|
||||
val = strchr(key, '=');
|
||||
if (!val) {
|
||||
kfree(key);
|
||||
if (!val)
|
||||
return -EINVAL;
|
||||
}
|
||||
*val++ = 0;
|
||||
val = skip_spaces(val);
|
||||
remove_trail_spaces(key);
|
||||
|
|
@ -326,25 +324,18 @@ static int parse_hints(struct hda_codec *codec, const char *buf)
|
|||
if (hint) {
|
||||
/* replace */
|
||||
kfree(hint->key);
|
||||
hint->key = key;
|
||||
hint->val = val;
|
||||
goto unlock;
|
||||
goto replace;
|
||||
}
|
||||
/* allocate a new hint entry */
|
||||
if (codec->hints.used >= MAX_HINTS)
|
||||
hint = NULL;
|
||||
else
|
||||
hint = snd_array_new(&codec->hints);
|
||||
if (hint) {
|
||||
hint->key = key;
|
||||
hint->val = val;
|
||||
} else {
|
||||
err = -ENOMEM;
|
||||
}
|
||||
unlock:
|
||||
if (err)
|
||||
kfree(key);
|
||||
return err;
|
||||
return -ENOMEM;
|
||||
hint = snd_array_new(&codec->hints);
|
||||
if (!hint)
|
||||
return -ENOMEM;
|
||||
replace:
|
||||
hint->key = no_free_ptr(key);
|
||||
hint->val = val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t hints_store(struct device *dev,
|
||||
|
|
|
|||
Loading…
Reference in New Issue