On 3/10/2018 7:54 AM, srinivas.kandaga...@linaro.org wrote:
From: Srinivas Kandagatla <srinivas.kandaga...@linaro.org>
[..]
+static int q6core_get_svc_versions(struct q6core *core)
+{
+       struct apr_device *adev = core->adev;
+       struct apr_hdr hdr = {0};
+       int rc;
+
+       core->get_version_supported = true;

core->get_version_supported should be set to true only after we get proper 
response from adsp in callback(). In case,we get wrong response from adsp, memory for 
g_core->svc_version
 will not get allocated and there will be NULL pointer dereference in  
q6core_get_svc_api_info() in below statement
+       } else if (g_core->get_version_supported) {
+               for (i = 0; i < g_core->svc_version->num_services; i++) {
+       hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD,
+                                     APR_HDR_LEN(APR_HDR_SIZE), APR_PKT_VER);
+       hdr.pkt_size = APR_HDR_SIZE;
+       hdr.opcode = AVCS_GET_VERSIONS;
+
+       rc = apr_send_pkt(adev, &hdr);
+       if (rc < 0)
+               return rc;
+

Reply via email to