It's not correct to call kfree(dev) when device_register(dev) has failed.
Fix this by calling put_device(dev) instead.

Fixes: 3c095f32a92b ("PM / Domains: Add support for multi PM domains per device 
to genpd")
Signed-off-by: Ulf Hansson <[email protected]>
---
 drivers/base/power/domain.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index ecac03dcc9b2..7fec69aebf46 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -2528,7 +2528,7 @@ struct device *genpd_dev_pm_attach_by_id(struct device 
*dev,
 
        ret = device_register(virt_dev);
        if (ret) {
-               kfree(virt_dev);
+               put_device(virt_dev);
                return ERR_PTR(ret);
        }
 
-- 
2.17.1

Reply via email to