summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiacheng Zheng <jiaczhen@codeaurora.org>2019-06-19 15:01:55 +0800
committerJiacheng Zheng <jiaczhen@codeaurora.org>2019-06-20 18:15:25 +0800
commit7ec9476039c19c103de3667e7d5e2dcb818cfdcc (patch)
tree1b1195f73a2791ffa75b8bcab8d8fc3e26848457
parent291c54b284a48dbaa69a0ddaedc7d05ab41ea59a (diff)
soc: qcom: hab: add error handling when dt item is missing
If certain testgipc node under aliases in device tree is missing, ep_path remains NULL and it will cause NULL dereference problem later in the code. We need to go to error handler and deinitialize everything under this condition. Change-Id: I98a27acfb2e8af9687114d610304a31a1ac9c3ca Signed-off-by: Jiacheng Zheng <jiaczhen@codeaurora.org>
-rw-r--r--drivers/soc/qcom/hab/hab_ghs.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/soc/qcom/hab/hab_ghs.c b/drivers/soc/qcom/hab/hab_ghs.c
index 01f42b5f67ac..2c8fb14dad1f 100644
--- a/drivers/soc/qcom/hab/hab_ghs.c
+++ b/drivers/soc/qcom/hab/hab_ghs.c
@@ -169,6 +169,7 @@ int habhyp_commdev_alloc(void **commdev, int is_be, char *name, int vmid_remote,
mmid_device->name,
mmid_device->id,
dt_name_idx);
+ of_node_put(gvh_dn);
ret = -ENOENT;
goto err;
}
@@ -176,9 +177,13 @@ int habhyp_commdev_alloc(void **commdev, int is_be, char *name, int vmid_remote,
ret = of_property_read_string(gvh_dn,
ghs_vmm_plugin_info.dt_name[dt_name_idx],
&ep_path);
- if (ret)
+ if (ret) {
pr_err("failed to read endpoint str ret %d\n",
ret);
+ of_node_put(gvh_dn);
+ ret = -ENOENT;
+ goto err;
+ }
of_node_put(gvh_dn);
ep_dn = of_find_node_by_path(ep_path);