for (i = 0; i < count; i++) {
                ec = (struct snd_soc_tplg_enum_control *)tplg->pos;
-               tplg->pos += (sizeof(struct snd_soc_tplg_enum_control) +
-                       ec->priv.size);
 
                /* validate kcontrol */
                if (strnlen(ec->hdr.name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN) ==
                if (se == NULL)
                        return -ENOMEM;
 
+               tplg->pos += (sizeof(struct snd_soc_tplg_enum_control) +
+                       ec->priv.size);
+
                dev_dbg(tplg->dev, "ASoC: adding enum kcontrol %s size %d\n",
                        ec->hdr.name, ec->items);
 
                if (sm == NULL)
                        goto err;
 
-               tplg->pos += (sizeof(struct snd_soc_tplg_mixer_control) +
-                       mc->priv.size);
-
                /* validate kcontrol */
                if (strnlen(mc->hdr.name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN) ==
                        SNDRV_CTL_ELEM_ID_NAME_MAXLEN)
                        goto err_str;
 
+               tplg->pos += (sizeof(struct snd_soc_tplg_mixer_control) +
+                       mc->priv.size);
+
                dev_dbg(tplg->dev, " adding DAPM widget mixer control %s at %d\n",
                        mc->hdr.name, i);
 
                if (se == NULL)
                        goto err;
 
+               tplg->pos += (sizeof(struct snd_soc_tplg_enum_control) +
+                               ec->priv.size);
+
                dev_dbg(tplg->dev, " adding DAPM widget enum control %s\n",
                        ec->hdr.name);
 
                                ec->hdr.name);
                        goto err_se;
                }
-
-               tplg->pos += (sizeof(struct snd_soc_tplg_enum_control) +
-                               ec->priv.size);
        }
 
        return kc;