From: Haggai Eran Date: Sun, 18 May 2014 08:12:24 +0000 (+0300) Subject: IB/core: Remove unneeded kobject_get/put calls X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=373c0ea181c8d277a4a51bbd705189a6a030b81c;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git IB/core: Remove unneeded kobject_get/put calls 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 child kobjects. Signed-off-by: Haggai Eran Signed-off-by: Roland Dreier --- diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c index 7d3292c7b4b4..1f77072fa1fe 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);