X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fparisc%2Fpdc_stable.c;h=de34aa9d3136055566204767cd2f5b9cbb28bfb6;hb=444ad82bc3eaa554be40d22dc248e58aeefd54d9;hp=444483405abf74ab6e795a542a171232af767043;hpb=4443d07fcfab39c4d2d9d7711cff983f15b374fc;p=linux-2.6 diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c index 444483405a..de34aa9d31 100644 --- a/drivers/parisc/pdc_stable.c +++ b/drivers/parisc/pdc_stable.c @@ -960,7 +960,7 @@ static struct attribute_group pdcs_attr_group = { .attrs = pdcs_subsys_attrs, }; -static struct kset *stable_kset; +static struct kobject *stable_kobj; static struct kset *paths_kset; /** @@ -991,13 +991,12 @@ pdcs_register_pathentries(void) if (err < 0) continue; - if ((err = kobject_set_name(&entry->kobj, "%s", entry->name))) - return err; entry->kobj.kset = paths_kset; - entry->kobj.ktype = &ktype_pdcspath; - if ((err = kobject_register(&entry->kobj))) + err = kobject_init_and_add(&entry->kobj, &ktype_pdcspath, NULL, + "%s", entry->name); + if (err) return err; - + /* kobject is now registered */ write_lock(&entry->rw_lock); entry->ready = 2; @@ -1009,6 +1008,7 @@ pdcs_register_pathentries(void) } write_unlock(&entry->rw_lock); + kobject_uevent(&entry->kobj, KOBJ_ADD); } return 0; @@ -1026,7 +1026,7 @@ pdcs_unregister_pathentries(void) for (i = 0; (entry = pdcspath_entries[i]); i++) { read_lock(&entry->rw_lock); if (entry->ready >= 2) - kobject_unregister(&entry->kobj); + kobject_put(&entry->kobj); read_unlock(&entry->rw_lock); } } @@ -1058,18 +1058,18 @@ pdc_stable_init(void) /* the actual result is 16 bits away */ pdcs_osid = (u16)(result >> 16); - /* For now we'll register the stable kset within this driver */ - stable_kset = kset_create_and_add("stable", NULL, &firmware_kset->kobj); - if (!stable_kset) { + /* For now we'll register the directory at /sys/firmware/stable */ + stable_kobj = kobject_create_and_add("stable", firmware_kobj); + if (!stable_kobj) { rc = -ENOMEM; goto fail_firmreg; } /* Don't forget the root entries */ - error = sysfs_create_group(&stable_kset->kobj, pdcs_attr_group); + error = sysfs_create_group(stable_kobj, pdcs_attr_group); /* register the paths kset as a child of the stable kset */ - paths_kset = kset_create_and_add("paths", NULL, &stable_kset->kobj); + paths_kset = kset_create_and_add("paths", NULL, stable_kobj); if (!paths_kset) { rc = -ENOMEM; goto fail_ksetreg; @@ -1086,7 +1086,7 @@ fail_pdcsreg: kset_unregister(paths_kset); fail_ksetreg: - kset_unregister(stable_kset); + kobject_put(stable_kobj); fail_firmreg: printk(KERN_INFO PDCS_PREFIX " bailing out\n"); @@ -1098,7 +1098,7 @@ pdc_stable_exit(void) { pdcs_unregister_pathentries(); kset_unregister(paths_kset); - kset_unregister(stable_kset); + kobject_put(stable_kobj); }