Per kobject_init_and_add() kernel-doc, calling kfree() directly on
error bypasses reference counting and skips the kobject's release
callback, leaking the reference.
Use kobject_put() instead of kfree() on registration failure to fix
this.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reviewed-by: Sourabh Jain <redacted>
Signed-off-by: Tarun Sahu <redacted>
---
drivers/firmware/edd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/firmware/edd.c b/drivers/firmware/edd.c
index f980c5b56858..763e7b16d517 100644
--- a/drivers/firmware/edd.c
+++ b/drivers/firmware/edd.c
@@ -748,7 +748,7 @@ edd_init(void)
rc = edd_device_register(edev, i);
if (rc) {
- kfree(edev);
+ kobject_put(&edev->kobj);
goto out;
}
edd_devices[i] = edev;--
2.55.0.979.g7e5102b832-goog