From 7ec9476039c19c103de3667e7d5e2dcb818cfdcc Mon Sep 17 00:00:00 2001 From: Jiacheng Zheng Date: Wed, 19 Jun 2019 15:01:55 +0800 Subject: [PATCH] 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 --- drivers/soc/qcom/hab/hab_ghs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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);