Commit 43968d2f1648f4dc92437dc0363a3e88377445b3
1 parent
4ff6abff83
Exists in
master
and in
7 other branches
kobject: get rid of kobject_kset_add_dir
kobject_kset_add_dir is only called in one place so remove it and use kobject_create() instead. Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Showing 3 changed files with 20 additions and 37 deletions Side-by-side Diff
drivers/base/core.c
... | ... | @@ -571,6 +571,8 @@ |
571 | 571 | static struct kobject * get_device_parent(struct device *dev, |
572 | 572 | struct device *parent) |
573 | 573 | { |
574 | + int retval; | |
575 | + | |
574 | 576 | if (dev->class) { |
575 | 577 | struct kobject *kobj = NULL; |
576 | 578 | struct kobject *parent_kobj; |
... | ... | @@ -600,8 +602,18 @@ |
600 | 602 | return kobj; |
601 | 603 | |
602 | 604 | /* or create a new class-directory at the parent device */ |
603 | - return kobject_kset_add_dir(&dev->class->class_dirs, | |
604 | - parent_kobj, dev->class->name); | |
605 | + k = kobject_create(); | |
606 | + if (!k) | |
607 | + return NULL; | |
608 | + k->kset = &dev->class->class_dirs; | |
609 | + retval = kobject_add_ng(k, parent_kobj, "%s", dev->class->name); | |
610 | + if (retval < 0) { | |
611 | + kobject_put(k); | |
612 | + return NULL; | |
613 | + } | |
614 | + /* Do not emit a uevent, as it's not needed for this | |
615 | + * "class glue" directory. */ | |
616 | + return k; | |
605 | 617 | } |
606 | 618 | |
607 | 619 | if (parent) |
include/linux/kobject.h
... | ... | @@ -91,6 +91,7 @@ |
91 | 91 | |
92 | 92 | extern void kobject_del(struct kobject *); |
93 | 93 | |
94 | +extern struct kobject * __must_check kobject_create(void); | |
94 | 95 | extern struct kobject * __must_check kobject_create_and_add(const char *name, |
95 | 96 | struct kobject *parent); |
96 | 97 | |
... | ... | @@ -102,9 +103,6 @@ |
102 | 103 | |
103 | 104 | extern struct kobject * kobject_get(struct kobject *); |
104 | 105 | extern void kobject_put(struct kobject *); |
105 | - | |
106 | -extern struct kobject *kobject_kset_add_dir(struct kset *kset, | |
107 | - struct kobject *, const char *); | |
108 | 106 | |
109 | 107 | extern char * kobject_get_path(struct kobject *, gfp_t); |
110 | 108 |
lib/kobject.c
... | ... | @@ -629,15 +629,18 @@ |
629 | 629 | .release = dynamic_kobj_release, |
630 | 630 | }; |
631 | 631 | |
632 | -/* | |
632 | +/** | |
633 | 633 | * kobject_create - create a struct kobject dynamically |
634 | 634 | * |
635 | 635 | * This function creates a kobject structure dynamically and sets it up |
636 | 636 | * to be a "dynamic" kobject with a default release function set up. |
637 | 637 | * |
638 | 638 | * If the kobject was not able to be created, NULL will be returned. |
639 | + * The kobject structure returned from here must be cleaned up with a | |
640 | + * call to kobject_put() and not kfree(), as kobject_init_ng() has | |
641 | + * already been called on this structure. | |
639 | 642 | */ |
640 | -static struct kobject *kobject_create(void) | |
643 | +struct kobject *kobject_create(void) | |
641 | 644 | { |
642 | 645 | struct kobject *kobj; |
643 | 646 | |
... | ... | @@ -681,36 +684,6 @@ |
681 | 684 | return kobj; |
682 | 685 | } |
683 | 686 | EXPORT_SYMBOL_GPL(kobject_create_and_add); |
684 | - | |
685 | -/** | |
686 | - * kobject_kset_add_dir - add sub directory of object. | |
687 | - * @kset: kset the directory is belongs to. | |
688 | - * @parent: object in which a directory is created. | |
689 | - * @name: directory name. | |
690 | - * | |
691 | - * Add a plain directory object as child of given object. | |
692 | - */ | |
693 | -struct kobject *kobject_kset_add_dir(struct kset *kset, | |
694 | - struct kobject *parent, const char *name) | |
695 | -{ | |
696 | - struct kobject *k; | |
697 | - int ret; | |
698 | - | |
699 | - k = kobject_create(); | |
700 | - if (!k) | |
701 | - return NULL; | |
702 | - | |
703 | - k->kset = kset; | |
704 | - ret = kobject_add_ng(k, parent, "%s", name); | |
705 | - if (ret < 0) { | |
706 | - printk(KERN_WARNING "%s: kobject_add error: %d\n", | |
707 | - __func__, ret); | |
708 | - kobject_put(k); | |
709 | - k = NULL; | |
710 | - } | |
711 | - | |
712 | - return k; | |
713 | -} | |
714 | 687 | |
715 | 688 | /** |
716 | 689 | * kset_init - initialize a kset for use |