Never directly free @dev after calling device_register(), even
if it returned an error! Always use put_device() to give up the
reference initialized.

Signed-off-by: Arvind Yadav <arvind.yadav...@gmail.com>
---
 drivers/base/soc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/base/soc.c b/drivers/base/soc.c
index 4e80f48..10b280f 100644
--- a/drivers/base/soc.c
+++ b/drivers/base/soc.c
@@ -150,6 +150,8 @@ struct soc_device *soc_device_register(struct 
soc_device_attribute *soc_dev_attr
 
 out3:
        ida_simple_remove(&soc_ida, soc_dev->soc_dev_num);
+       put_device(&soc_dev->dev);
+       soc_dev = NULL;
 out2:
        kfree(soc_dev);
 out1:
-- 
2.7.4

Reply via email to