aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArvind Yadav <arvind.yadav.cs@gmail.com>2018-03-08 04:36:08 -0500
committerBjorn Andersson <bjorn.andersson@linaro.org>2018-03-18 00:46:19 -0400
commitbe5acd246daa04edad9d758b8be37e5e2f989243 (patch)
tree61d18172da5c4144e22bcc2ae3d2002d779119a8 /drivers
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')
-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,
1408 ret = device_register(&edge->dev); 1408 ret = device_register(&edge->dev);
1409 if (ret) { 1409 if (ret) {
1410 pr_err("failed to register smd edge\n"); 1410 pr_err("failed to register smd edge\n");
1411 put_device(&edge->dev);
1411 return ERR_PTR(ret); 1412 return ERR_PTR(ret);
1412 } 1413 }
1413 1414
@@ -1428,7 +1429,7 @@ struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
1428 return edge; 1429 return edge;
1429 1430
1430unregister_dev: 1431unregister_dev:
1431 put_device(&edge->dev); 1432 device_unregister(&edge->dev);
1432 return ERR_PTR(ret); 1433 return ERR_PTR(ret);
1433} 1434}
1434EXPORT_SYMBOL(qcom_smd_register_edge); 1435EXPORT_SYMBOL(qcom_smd_register_edge);