Commit f53c4c20 authored by Liam Girdwood's avatar Liam Girdwood Committed by Mark Brown

ASoC: topology: Check widget kcontrols before deref

Validate the topology input before we dereference the pointer.
Signed-off-by: default avatarLiam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent feb12f0c
...@@ -513,7 +513,7 @@ static void remove_widget(struct snd_soc_component *comp, ...@@ -513,7 +513,7 @@ static void remove_widget(struct snd_soc_component *comp,
*/ */
if (dobj->widget.kcontrol_type == SND_SOC_TPLG_TYPE_ENUM) { if (dobj->widget.kcontrol_type == SND_SOC_TPLG_TYPE_ENUM) {
/* enumerated widget mixer */ /* enumerated widget mixer */
for (i = 0; i < w->num_kcontrols; i++) { for (i = 0; w->kcontrols != NULL && i < w->num_kcontrols; i++) {
struct snd_kcontrol *kcontrol = w->kcontrols[i]; struct snd_kcontrol *kcontrol = w->kcontrols[i];
struct soc_enum *se = struct soc_enum *se =
(struct soc_enum *)kcontrol->private_value; (struct soc_enum *)kcontrol->private_value;
...@@ -530,7 +530,7 @@ static void remove_widget(struct snd_soc_component *comp, ...@@ -530,7 +530,7 @@ static void remove_widget(struct snd_soc_component *comp,
} }
} else { } else {
/* volume mixer or bytes controls */ /* volume mixer or bytes controls */
for (i = 0; i < w->num_kcontrols; i++) { for (i = 0; w->kcontrols != NULL && i < w->num_kcontrols; i++) {
struct snd_kcontrol *kcontrol = w->kcontrols[i]; struct snd_kcontrol *kcontrol = w->kcontrols[i];
if (dobj->widget.kcontrol_type if (dobj->widget.kcontrol_type
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment