ASoC: msm: qdsp6v2: Update set_params to avoid use before set
In function msm_compr_set_params few codec parameters are getting used before being updated with values received in the call. Prevent usage of incorrect param values by updating params before they are accessed. CRs-Fixed: 993882 Signed-off-by: Dhananjay Kumar <dhakumar@codeaurora.org> Change-Id: Ia3d3e13d4bd7975a11cbeb96929fb224e8271916
This commit is contained in:
parent
c4ab23b312
commit
cf6e60c32f
1 changed files with 8 additions and 7 deletions
|
@ -624,7 +624,8 @@ static int msm_compr_get_partial_drain_delay(int frame_sz, int sample_rate)
|
|||
delay_time_ms = delay_time_ms > PARTIAL_DRAIN_ACK_EARLY_BY_MSEC ?
|
||||
delay_time_ms - PARTIAL_DRAIN_ACK_EARLY_BY_MSEC : 0;
|
||||
|
||||
pr_debug("%s: partial drain delay %d\n", __func__, delay_time_ms);
|
||||
pr_debug("%s: frame_sz %d, sample_rate %d, partial drain delay %d\n",
|
||||
__func__, frame_sz, sample_rate, delay_time_ms);
|
||||
return delay_time_ms;
|
||||
}
|
||||
|
||||
|
@ -1259,6 +1260,12 @@ static int msm_compr_set_params(struct snd_compr_stream *cstream,
|
|||
if (i == num_rates)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(&prtd->codec_param, params, sizeof(struct snd_compr_params));
|
||||
/* ToDo: remove duplicates */
|
||||
prtd->num_channels = prtd->codec_param.codec.ch_in;
|
||||
prtd->sample_rate = prtd->codec_param.codec.sample_rate;
|
||||
pr_debug("%s: sample_rate %d\n", __func__, prtd->sample_rate);
|
||||
|
||||
if (prtd->codec_param.codec.compr_passthr >= 0 &&
|
||||
prtd->codec_param.codec.compr_passthr <= 2)
|
||||
prtd->compr_passthr = prtd->codec_param.codec.compr_passthr;
|
||||
|
@ -1376,12 +1383,6 @@ static int msm_compr_set_params(struct snd_compr_stream *cstream,
|
|||
prtd->partial_drain_delay =
|
||||
msm_compr_get_partial_drain_delay(frame_sz, prtd->sample_rate);
|
||||
|
||||
memcpy(&prtd->codec_param, params, sizeof(struct snd_compr_params));
|
||||
|
||||
/* ToDo: remove duplicates */
|
||||
prtd->num_channels = prtd->codec_param.codec.ch_in;
|
||||
prtd->sample_rate = prtd->codec_param.codec.sample_rate;
|
||||
pr_debug("%s: sample_rate %d\n", __func__, prtd->sample_rate);
|
||||
ret = msm_compr_configure_dsp(cstream);
|
||||
|
||||
return ret;
|
||||
|
|
Loading…
Add table
Reference in a new issue