]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: meson: aiu: Validate written enum values
authorHyeongJun An <sammiee5311@gmail.com>
Tue, 9 Jun 2026 12:43:14 +0000 (21:43 +0900)
committerMark Brown <broonie@kernel.org>
Thu, 11 Jun 2026 19:44:44 +0000 (20:44 +0100)
The AIU HDMI and internal codec mux put callbacks use the written enum
value with snd_soc_enum_item_to_val() before checking whether the value is
valid for the enumeration.

Reject out-of-range values before converting the enum item, matching the
validation already done by the G12A HDMI and internal codec mux controls.

Fixes: b82b734c0e9a ("ASoC: meson: aiu: add hdmi codec control support")
Fixes: 65816025d461 ("ASoC: meson: aiu: add internal dac codec control support")
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: HyeongJun An <sammiee5311@gmail.com>
Link: https://patch.msgid.link/20260609124317.38046-3-sammiee5311@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/meson/aiu-acodec-ctrl.c
sound/soc/meson/aiu-codec-ctrl.c

index 483772ba69cd7c7ad8dd84d90e2cf6388d51c82a..94c5d65335233f6350e2827c2fdf2e58a691e026 100644 (file)
@@ -36,6 +36,9 @@ static int aiu_acodec_ctrl_mux_put_enum(struct snd_kcontrol *kcontrol,
        struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
        unsigned int mux, changed;
 
+       if (ucontrol->value.enumerated.item[0] >= e->items)
+               return -EINVAL;
+
        mux = snd_soc_enum_item_to_val(e, ucontrol->value.enumerated.item[0]);
        changed = snd_soc_component_test_bits(component, e->reg,
                                              CTRL_DIN_LRCLK_SRC,
index 396f815077e29187a64bf120624b6785eaecfdc4..60bb4cdfee52017e7b9ea65d8e2166a003d39547 100644 (file)
@@ -28,6 +28,9 @@ static int aiu_codec_ctrl_mux_put_enum(struct snd_kcontrol *kcontrol,
        struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
        unsigned int mux, changed;
 
+       if (ucontrol->value.enumerated.item[0] >= e->items)
+               return -EINVAL;
+
        mux = snd_soc_enum_item_to_val(e, ucontrol->value.enumerated.item[0]);
        changed = snd_soc_component_test_bits(component, e->reg,
                                              CTRL_DATA_SEL,