diff options
| author | Jiacheng Zheng <jiaczhen@codeaurora.org> | 2019-06-19 15:01:55 +0800 |
|---|---|---|
| committer | Jiacheng Zheng <jiaczhen@codeaurora.org> | 2019-06-20 18:15:25 +0800 |
| commit | 7ec9476039c19c103de3667e7d5e2dcb818cfdcc (patch) | |
| tree | 1b1195f73a2791ffa75b8bcab8d8fc3e26848457 | |
| parent | 291c54b284a48dbaa69a0ddaedc7d05ab41ea59a (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.c | 7 |
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); |
