summaryrefslogtreecommitdiff
path: root/drivers/soc/qcom
diff options
context:
space:
mode:
authorAditya Bavanari <abavanar@codeaurora.org>2017-11-22 12:51:05 +0530
committerAditya Bavanari <abavanar@codeaurora.org>2017-12-18 12:22:43 +0530
commitc643a15d73b3fb6329b002662e72dfa96acfdb8a (patch)
tree6552f67af8191aef51bcdc27d85ec31efe1269c4 /drivers/soc/qcom
parentb598eeb6bc8c5989c3ccc8acd59794596be461ce (diff)
ASoC: apr: Add validity check to APR port
Add boundary checks for APR port received from ADSP. CRs-Fixed: 2143207 Change-Id: I9a7fa39ee223e1859323caa6eb74c1c8a26a041d Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
Diffstat (limited to 'drivers/soc/qcom')
-rw-r--r--drivers/soc/qcom/qdsp6v2/apr.c7
-rw-r--r--drivers/soc/qcom/qdsp6v2/apr_vm.c3
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/soc/qcom/qdsp6v2/apr.c b/drivers/soc/qcom/qdsp6v2/apr.c
index 3791169ec0ac..b1afd02b49bf 100644
--- a/drivers/soc/qcom/qdsp6v2/apr.c
+++ b/drivers/soc/qcom/qdsp6v2/apr.c
@@ -679,9 +679,10 @@ void apr_cb_func(void *buf, int len, void *priv)
}
temp_port = ((data.dest_port >> 8) * 8) + (data.dest_port & 0xFF);
- pr_debug("port = %d t_port = %d\n", data.src_port, temp_port);
- if (c_svc->port_cnt && c_svc->port_fn[temp_port])
- c_svc->port_fn[temp_port](&data, c_svc->port_priv[temp_port]);
+ if (((temp_port >= 0) && (temp_port < APR_MAX_PORTS))
+ && (c_svc->port_cnt && c_svc->port_fn[temp_port]))
+ c_svc->port_fn[temp_port](&data,
+ c_svc->port_priv[temp_port]);
else if (c_svc->fn)
c_svc->fn(&data, c_svc->priv);
else
diff --git a/drivers/soc/qcom/qdsp6v2/apr_vm.c b/drivers/soc/qcom/qdsp6v2/apr_vm.c
index d0ea7b22717a..56592ac91e1b 100644
--- a/drivers/soc/qcom/qdsp6v2/apr_vm.c
+++ b/drivers/soc/qcom/qdsp6v2/apr_vm.c
@@ -514,7 +514,8 @@ static int apr_vm_cb_process_evt(char *buf, int len)
temp_port = ((data.dest_port >> 8) * 8) + (data.dest_port & 0xFF);
pr_debug("port = %d t_port = %d\n", data.src_port, temp_port);
- if (c_svc->port_cnt && c_svc->port_fn[temp_port])
+ if (((temp_port >= 0) && (temp_port < APR_MAX_PORTS))
+ && (c_svc->port_cnt && c_svc->port_fn[temp_port]))
c_svc->port_fn[temp_port](&data, c_svc->port_priv[temp_port]);
else if (c_svc->fn)
c_svc->fn(&data, c_svc->priv);