Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=35be0681983752116a8161ad3b30e830963108a4
Commit:     35be0681983752116a8161ad3b30e830963108a4
Parent:     901195ed7f4b2f30dc5a36271887939c5d7bfb9f
Author:     Greg Kroah-Hartman <[EMAIL PROTECTED]>
AuthorDate: Mon Dec 17 15:54:39 2007 -0400
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Thu Jan 24 20:40:26 2008 -0800

    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 <[EMAIL PROTECTED]>
    Cc: Sean Hefty <[EMAIL PROTECTED]>
    Cc: Hal Rosenstock <[EMAIL PROTECTED]>
    Cc: Kay Sievers <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 drivers/infiniband/core/sysfs.c |   35 +++++++++--------------------------
 include/rdma/ib_verbs.h         |    2 +-
 2 files changed, 10 insertions(+), 27 deletions(-)

diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index 3d40506..aa81129 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -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);
 }
 
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 11f3960..cfbd38f 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -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 {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to