mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
ASoC: topology: kfree kcontrol->private_value before freeing kcontrol
kcontrol->private_value is being kfree'd after kcontrol has been freed
(in previous call to snd_ctl_remove). Instead, fix this by kfreeing
the private_value before kcontrol.
CoverityScan CID#1388311 "Read from pointer after free"
Fixes: eea3dd4f12
("ASoC: topology: Only free TLV for volume mixers of a widget")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a5de5b74a5
commit
c2b36129ce
@ -514,13 +514,12 @@ static void remove_widget(struct snd_soc_component *comp,
|
||||
== SND_SOC_TPLG_TYPE_MIXER)
|
||||
kfree(kcontrol->tlv.p);
|
||||
|
||||
snd_ctl_remove(card, kcontrol);
|
||||
|
||||
/* Private value is used as struct soc_mixer_control
|
||||
* for volume mixers or soc_bytes_ext for bytes
|
||||
* controls.
|
||||
*/
|
||||
kfree((void *)kcontrol->private_value);
|
||||
snd_ctl_remove(card, kcontrol);
|
||||
}
|
||||
kfree(w->kcontrol_news);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user