diff mbox

[for-next,1/3] IB/core: remove unneeded kobject_get/put calls

Message ID 1400400746-9030-2-git-send-email-haggaie@mellanox.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Haggai Eran May 18, 2014, 8:12 a.m. UTC
The ib_core module will call kobject_get on the parent object of each kobject
it creates. This is redundant since kobject_add does that anyway.

As a side effect, this patch should fix leaking the ports kobject and the
device kobject during unregister flow, since the previous code didn't seem to
take into account the kobject_get calls on behalf of the children kobjects.

Signed-off-by: Haggai Eran <haggaie@mellanox.com>
---
 drivers/infiniband/core/sysfs.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
diff mbox

Patch

diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index 7d3292c..1f77072 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -534,7 +534,7 @@  static int add_port(struct ib_device *device, int port_num,
 	p->port_num   = port_num;
 
 	ret = kobject_init_and_add(&p->kobj, &port_type,
-				   kobject_get(device->ports_parent),
+				   device->ports_parent,
 				   "%d", port_num);
 	if (ret)
 		goto err_put;
@@ -599,7 +599,6 @@  err_remove_pma:
 	sysfs_remove_group(&p->kobj, &pma_group);
 
 err_put:
-	kobject_put(device->ports_parent);
 	kfree(p);
 	return ret;
 }
@@ -835,7 +834,7 @@  int ib_device_register_sysfs(struct ib_device *device,
 	}
 
 	device->ports_parent = kobject_create_and_add("ports",
-					kobject_get(&class_dev->kobj));
+						      &class_dev->kobj);
 	if (!device->ports_parent) {
 		ret = -ENOMEM;
 		goto err_put;
@@ -876,8 +875,6 @@  err_put:
 		}
 	}
 
-	kobject_put(&class_dev->kobj);
-
 err_unregister:
 	device_unregister(class_dev);