summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErin Yan <xinyey@codeaurora.org>2019-11-14 10:13:38 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2019-11-14 18:14:03 -0800
commitf12ce981e54b9202c348565b73021e1ac31e951f (patch)
tree261d981530a595ca8f58069beb9aad4337dcee12
parent39132a8d3352b23e333779ec68daec8d1ce853da (diff)
ASoc: msm: Fix KW issues for audio adm driver
Add variable initialization and NULL pointer check. Return error in invalid parameter case to simplify the logic. Change-Id: I1fbdb156b34075014a525723f439fb96c457d350 Signed-off-by: Erin Yan <xinyey@codeaurora.org>
-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;
}