summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2019-11-15 23:09:05 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2019-11-15 23:09:05 -0800
commitee4cdc8d6314c7fbcc487a9901c550f1beb82da3 (patch)
treecac1c4d4b9eeb1304eeded8bae57d5e4c183d027
parent01c47b8a7e64cc8c598aac10887e9ce328bbb2eb (diff)
parentf12ce981e54b9202c348565b73021e1ac31e951f (diff)
Merge "ASoc: msm: Fix KW issues for audio adm driver"
-rw-r--r--sound/soc/msm/qdsp6v2/q6adm.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sound/soc/msm/qdsp6v2/q6adm.c b/sound/soc/msm/qdsp6v2/q6adm.c
index 5478920e38a9..dc7165263316 100644
--- a/sound/soc/msm/qdsp6v2/q6adm.c
+++ b/sound/soc/msm/qdsp6v2/q6adm.c
@@ -1219,7 +1219,7 @@ static int adm_process_get_param_response(u32 opcode, u32 idx, u32 *payload,
struct adm_cmd_rsp_get_pp_params_v5 *v5_rsp = NULL;
struct adm_cmd_rsp_get_pp_params_v6 *v6_rsp = NULL;
u32 *param_data = NULL;
- int data_size;
+ int data_size = 0;
int struct_size;
if (payload == NULL) {
@@ -1233,7 +1233,7 @@ static int adm_process_get_param_response(u32 opcode, u32 idx, u32 *payload,
if (payload_size < struct_size) {
pr_err("%s: payload size %d < expected size %d\n",
__func__, payload_size, struct_size);
- break;
+ return -EINVAL;
}
v5_rsp = (struct adm_cmd_rsp_get_pp_params_v5 *) payload;
data_size = v5_rsp->param_hdr.param_size;
@@ -1244,7 +1244,7 @@ static int adm_process_get_param_response(u32 opcode, u32 idx, u32 *payload,
if (payload_size < struct_size) {
pr_err("%s: payload size %d < expected size %d\n",
__func__, payload_size, struct_size);
- break;
+ return -EINVAL;
}
v6_rsp = (struct adm_cmd_rsp_get_pp_params_v6 *) payload;
data_size = v6_rsp->param_hdr.param_size;
@@ -1272,6 +1272,10 @@ static int adm_process_get_param_response(u32 opcode, u32 idx, u32 *payload,
pr_debug("%s: GET_PP PARAM: received parameter length: 0x%x\n",
__func__, adm_get_parameters[idx]);
/* store params after param_size */
+ if (param_data == NULL) {
+ pr_err("%s: Invalid parameter data got!\n", __func__);
+ return -EINVAL;
+ }
memcpy(&adm_get_parameters[idx + 1], param_data, data_size);
return 0;
}