aboutsummaryrefslogtreecommitdiff
path: root/drivers/rpmsg/qcom_smd.c
diff options
context:
space:
mode:
authorArvind Yadav <arvind.yadav.cs@gmail.com>2018-03-08 15:06:08 +0530
committerBjorn Andersson <bjorn.andersson@linaro.org>2018-03-17 21:46:19 -0700
commitbe5acd246daa04edad9d758b8be37e5e2f989243 (patch)
tree61d18172da5c4144e22bcc2ae3d2002d779119a8 /drivers/rpmsg/qcom_smd.c
parenta9011726c4bb37e5d6a7279bf47fcc19cd9d3e1a (diff)
rpmsg: smd: use put_device() if device_register fail
if device_register() returned an error! Always use put_device() to give up the reference initialized. unregister device for other return error. Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Diffstat (limited to 'drivers/rpmsg/qcom_smd.c')
-rw-r--r--drivers/rpmsg/qcom_smd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c
index 92d0c6a7a837..ff8101a768bc 100644
--- a/drivers/rpmsg/qcom_smd.c
+++ b/drivers/rpmsg/qcom_smd.c
@@ -1408,6 +1408,7 @@ struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
ret = device_register(&edge->dev);
if (ret) {
pr_err("failed to register smd edge\n");
+ put_device(&edge->dev);
return ERR_PTR(ret);
}
@@ -1428,7 +1429,7 @@ struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
return edge;
unregister_dev:
- put_device(&edge->dev);
+ device_unregister(&edge->dev);
return ERR_PTR(ret);
}
EXPORT_SYMBOL(qcom_smd_register_edge);