diff options
| author | Erin Yan <xinyey@codeaurora.org> | 2019-11-14 10:13:38 +0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-11-14 18:14:03 -0800 |
| commit | f12ce981e54b9202c348565b73021e1ac31e951f (patch) | |
| tree | 261d981530a595ca8f58069beb9aad4337dcee12 | |
| parent | 39132a8d3352b23e333779ec68daec8d1ce853da (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.c | 10 |
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; } |
