diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 2d525eda6c4a..921bca2315b8 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -21703,16 +21703,16 @@ static int msm_routing_put_lsm_app_type_cfg_control( kcontrol->private_value)->shift; int i = 0, j; - num_app_cfg_types = ucontrol->value.integer.value[i++]; - memset(lsm_app_type_cfg, 0, MAX_APP_TYPES* - sizeof(struct msm_pcm_routing_app_type_data)); - - if (num_app_cfg_types > MAX_APP_TYPES) { + if (ucontrol->value.integer.value[0] > MAX_APP_TYPES) { pr_err("%s: number of app types exceed the max supported\n", __func__); return -EINVAL; } + num_app_cfg_types = ucontrol->value.integer.value[i++]; + memset(lsm_app_type_cfg, 0, MAX_APP_TYPES* + sizeof(struct msm_pcm_routing_app_type_data)); + for (j = 0; j < num_app_cfg_types; j++) { lsm_app_type_cfg[j].app_type = ucontrol->value.integer.value[i++];