summaryrefslogtreecommitdiff
path: root/sound/soc/msm
diff options
context:
space:
mode:
authorDhananjay Kumar <dhakumar@codeaurora.org>2016-03-23 20:51:33 +0530
committerJeevan Shriram <jshriram@codeaurora.org>2016-05-06 12:06:19 -0700
commitcf6e60c32f5f28590e8aba8ce72dc897dc81c7be (patch)
tree7504e9d245ecc4f954d06084e7e239f971713350 /sound/soc/msm
parentc4ab23b3121d441e4eba746491cb853aaa54540b (diff)
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
Diffstat (limited to 'sound/soc/msm')
-rwxr-xr-xsound/soc/msm/qdsp6v2/msm-compress-q6-v2.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c
index 849958b3c29f..777466c634ba 100755
--- a/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c
+++ b/sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c
@@ -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;