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,
                                              CTRL0_I2S_DAT_SEL,
        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, TOHDMITX_CTRL0,
                                              CTRL0_SPDIF_SEL,