]> err.no Git - linux-2.6/blobdiff - drivers/base/sys.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6] / drivers / base / sys.c
index 47fc6eb6473f0c1d6bfb7f216b7abeacc8aed36b..8e13fd9421635753f7b634ba4177b5df003a074f 100644 (file)
@@ -133,9 +133,11 @@ int sysdev_class_register(struct sysdev_class * cls)
        pr_debug("Registering sysdev class '%s'\n",
                 kobject_name(&cls->kset.kobj));
        INIT_LIST_HEAD(&cls->drivers);
+       memset(&cls->kset.kobj, 0x00, sizeof(struct kobject));
        cls->kset.kobj.parent = &system_kset->kobj;
        cls->kset.kobj.ktype = &ktype_sysdev_class;
        cls->kset.kobj.kset = system_kset;
+       kobject_set_name(&cls->kset.kobj, cls->name);
        return kset_register(&cls->kset);
 }
 
@@ -226,6 +228,9 @@ int sysdev_register(struct sys_device * sysdev)
 
        pr_debug("Registering sys device '%s'\n", kobject_name(&sysdev->kobj));
 
+       /* initialize the kobject to 0, in case it had previously been used */
+       memset(&sysdev->kobj, 0x00, sizeof(struct kobject));
+
        /* Make sure the kset is set */
        sysdev->kobj.kset = &cls->kset;
 
@@ -264,7 +269,7 @@ void sysdev_unregister(struct sys_device * sysdev)
        }
        mutex_unlock(&sysdev_drivers_lock);
 
-       kobject_unregister(&sysdev->kobj);
+       kobject_put(&sysdev->kobj);
 }