Commit 35be0681 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Kobject: change drivers/infiniband to use kobject_init_and_add



Stop using kobject_register, as this way we can control the sending of
the uevent properly, after everything is properly initialized.

Cc: Roland Dreier <rolandd@cisco.com>
Cc: Sean Hefty <mshefty@ichips.intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 901195ed
Loading
Loading
Loading
Loading
+9 −26
Original line number Diff line number Diff line
@@ -508,19 +508,10 @@ static int add_port(struct ib_device *device, int port_num)

	p->ibdev      = device;
	p->port_num   = port_num;
	p->kobj.ktype = &port_type;

	p->kobj.parent = kobject_get(&device->ports_parent);
	if (!p->kobj.parent) {
		ret = -EBUSY;
		goto err;
	}

	ret = kobject_set_name(&p->kobj, "%d", port_num);
	if (ret)
		goto err_put;

	ret = kobject_register(&p->kobj);
	ret = kobject_init_and_add(&p->kobj, &port_type,
				   kobject_get(device->ports_parent),
				   "%d", port_num);
	if (ret)
		goto err_put;

@@ -549,6 +540,7 @@ static int add_port(struct ib_device *device, int port_num)

	list_add_tail(&p->kobj.entry, &device->port_list);

	kobject_uevent(&p->kobj, KOBJ_ADD);
	return 0;

err_free_pkey:
@@ -570,9 +562,7 @@ err_remove_pma:
	sysfs_remove_group(&p->kobj, &pma_group);

err_put:
	kobject_put(&device->ports_parent);

err:
	kobject_put(device->ports_parent);
	kfree(p);
	return ret;
}
@@ -694,16 +684,9 @@ int ib_device_register_sysfs(struct ib_device *device)
			goto err_unregister;
	}

	device->ports_parent.parent = kobject_get(&class_dev->kobj);
	if (!device->ports_parent.parent) {
		ret = -EBUSY;
		goto err_unregister;
	}
	ret = kobject_set_name(&device->ports_parent, "ports");
	if (ret)
		goto err_put;
	ret = kobject_register(&device->ports_parent);
	if (ret)
	device->ports_parent = kobject_create_and_add("ports",
					kobject_get(&class_dev->kobj));
	if (!device->ports_parent)
		goto err_put;

	if (device->node_type == RDMA_NODE_IB_SWITCH) {
@@ -758,7 +741,7 @@ void ib_device_unregister_sysfs(struct ib_device *device)
		kobject_unregister(p);
	}

	kobject_unregister(&device->ports_parent);
	kobject_unregister(device->ports_parent);
	class_device_unregister(&device->class_dev);
}

+1 −1
Original line number Diff line number Diff line
@@ -1026,7 +1026,7 @@ struct ib_device {

	struct module               *owner;
	struct class_device          class_dev;
	struct kobject               ports_parent;
	struct kobject               *ports_parent;
	struct list_head             port_list;

	enum {