soc: qcom: fix null pointer dereference issue

Fix the null pointer dereference issues
in the cdsprm driver.

Change-Id: I1c1835f265ee2364bad7e4609ed4da342c2e84e6
Signed-off-by: Bavyasritha Alahari <alahari@codeaurora.org>
This commit is contained in:
Bavyasritha Alahari 2021-05-26 17:05:16 +05:30
parent 0611102d4e
commit 53951c6319

View File

@ -617,29 +617,29 @@ static void qos_cores_init(struct device *dev)
dev_err(dev,
"kcalloc failed for cpucores\n");
gcdsprm.b_silver_en = false;
}
} else {
for (i = 0; i < gcdsprm.corecount; i++) {
err = of_property_read_u32_index(dev->of_node,
"qcom,qos-cores", i, &cpucores[i]);
if (err) {
dev_err(dev,
"%s: failed to read QOS coree for core:%d\n",
__func__, i);
gcdsprm.b_silver_en = false;
}
}
for (i = 0; i < gcdsprm.corecount; i++) {
err = of_property_read_u32_index(dev->of_node,
"qcom,qos-cores", i, &cpucores[i]);
if (err) {
gcdsprm.coreno = cpucores;
gcdsprm.dev_pm_qos_req = kcalloc(gcdsprm.corecount,
sizeof(struct dev_pm_qos_request), GFP_KERNEL);
if (gcdsprm.dev_pm_qos_req == NULL) {
dev_err(dev,
"%s: failed to read QOS coree for core:%d\n",
__func__, i);
"kcalloc failed for dev_pm_qos_req\n");
gcdsprm.b_silver_en = false;
}
}
gcdsprm.coreno = cpucores;
gcdsprm.dev_pm_qos_req = kcalloc(gcdsprm.corecount,
sizeof(struct dev_pm_qos_request), GFP_KERNEL);
if (gcdsprm.dev_pm_qos_req == NULL) {
dev_err(dev,
"kcalloc failed for dev_pm_qos_req\n");
gcdsprm.b_silver_en = false;
}
}
}
@ -875,11 +875,11 @@ static int process_cdsp_request_thread(void *data)
msg = &req->msg;
if ((msg->feature_id == SYSMON_CDSP_FEATURE_RM_RX) &&
if (msg && (msg->feature_id == SYSMON_CDSP_FEATURE_RM_RX) &&
gcdsprm.b_qosinitdone) {
process_rm_request(msg);
} else if (msg->feature_id ==
SYSMON_CDSP_FEATURE_L3_RX) {
} else if (msg && (msg->feature_id ==
SYSMON_CDSP_FEATURE_L3_RX)) {
l3_clock_khz = msg->fs.l3_struct.l3_clock_khz;
spin_lock_irqsave(&gcdsprm.l3_lock, flags);
@ -891,8 +891,8 @@ static int process_cdsp_request_thread(void *data)
pr_debug("Set L3 clock %d done\n",
l3_clock_khz);
}
} else if (msg->feature_id ==
SYSMON_CDSP_FEATURE_NPU_LIMIT_RX) {
} else if (msg && (msg->feature_id ==
SYSMON_CDSP_FEATURE_NPU_LIMIT_RX)) {
mutex_lock(&gcdsprm.npu_activity_lock);
gcdsprm.set_corner_limit_cached =
@ -936,8 +936,8 @@ static int process_cdsp_request_thread(void *data)
pr_err("rpmsg send failed %d\n", result);
else
pr_debug("NPU limit ack sent\n");
} else if (msg->feature_id ==
SYSMON_CDSP_FEATURE_VERSION_RX) {
} else if (msg && (msg->feature_id ==
SYSMON_CDSP_FEATURE_VERSION_RX)) {
cdsprm_rpmsg_send_details();
pr_debug("Sent preserved data to DSP\n");
}