Loading drivers/base/core.c +14 −2 Original line number Diff line number Diff line Loading @@ -571,6 +571,8 @@ static struct kobject *virtual_device_parent(struct device *dev) static struct kobject * get_device_parent(struct device *dev, struct device *parent) { int retval; if (dev->class) { struct kobject *kobj = NULL; struct kobject *parent_kobj; Loading Loading @@ -600,8 +602,18 @@ static struct kobject * get_device_parent(struct device *dev, return kobj; /* or create a new class-directory at the parent device */ return kobject_kset_add_dir(&dev->class->class_dirs, parent_kobj, dev->class->name); k = kobject_create(); if (!k) return NULL; k->kset = &dev->class->class_dirs; retval = kobject_add_ng(k, parent_kobj, "%s", dev->class->name); if (retval < 0) { kobject_put(k); return NULL; } /* Do not emit a uevent, as it's not needed for this * "class glue" directory. */ return k; } if (parent) Loading include/linux/kobject.h +1 −3 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ extern int __must_check kobject_init_and_add(struct kobject *kobj, extern void kobject_del(struct kobject *); extern struct kobject * __must_check kobject_create(void); extern struct kobject * __must_check kobject_create_and_add(const char *name, struct kobject *parent); Loading @@ -103,9 +104,6 @@ extern void kobject_unregister(struct kobject *); extern struct kobject * kobject_get(struct kobject *); extern void kobject_put(struct kobject *); extern struct kobject *kobject_kset_add_dir(struct kset *kset, struct kobject *, const char *); extern char * kobject_get_path(struct kobject *, gfp_t); struct kobj_type { Loading lib/kobject.c +5 −32 Original line number Diff line number Diff line Loading @@ -629,15 +629,18 @@ static struct kobj_type dynamic_kobj_ktype = { .release = dynamic_kobj_release, }; /* /** * kobject_create - create a struct kobject dynamically * * This function creates a kobject structure dynamically and sets it up * to be a "dynamic" kobject with a default release function set up. * * If the kobject was not able to be created, NULL will be returned. * The kobject structure returned from here must be cleaned up with a * call to kobject_put() and not kfree(), as kobject_init_ng() has * already been called on this structure. */ static struct kobject *kobject_create(void) struct kobject *kobject_create(void) { struct kobject *kobj; Loading Loading @@ -682,36 +685,6 @@ struct kobject *kobject_create_and_add(const char *name, struct kobject *parent) } EXPORT_SYMBOL_GPL(kobject_create_and_add); /** * kobject_kset_add_dir - add sub directory of object. * @kset: kset the directory is belongs to. * @parent: object in which a directory is created. * @name: directory name. * * Add a plain directory object as child of given object. */ struct kobject *kobject_kset_add_dir(struct kset *kset, struct kobject *parent, const char *name) { struct kobject *k; int ret; k = kobject_create(); if (!k) return NULL; k->kset = kset; ret = kobject_add_ng(k, parent, "%s", name); if (ret < 0) { printk(KERN_WARNING "%s: kobject_add error: %d\n", __func__, ret); kobject_put(k); k = NULL; } return k; } /** * kset_init - initialize a kset for use * @k: kset Loading Loading
drivers/base/core.c +14 −2 Original line number Diff line number Diff line Loading @@ -571,6 +571,8 @@ static struct kobject *virtual_device_parent(struct device *dev) static struct kobject * get_device_parent(struct device *dev, struct device *parent) { int retval; if (dev->class) { struct kobject *kobj = NULL; struct kobject *parent_kobj; Loading Loading @@ -600,8 +602,18 @@ static struct kobject * get_device_parent(struct device *dev, return kobj; /* or create a new class-directory at the parent device */ return kobject_kset_add_dir(&dev->class->class_dirs, parent_kobj, dev->class->name); k = kobject_create(); if (!k) return NULL; k->kset = &dev->class->class_dirs; retval = kobject_add_ng(k, parent_kobj, "%s", dev->class->name); if (retval < 0) { kobject_put(k); return NULL; } /* Do not emit a uevent, as it's not needed for this * "class glue" directory. */ return k; } if (parent) Loading
include/linux/kobject.h +1 −3 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ extern int __must_check kobject_init_and_add(struct kobject *kobj, extern void kobject_del(struct kobject *); extern struct kobject * __must_check kobject_create(void); extern struct kobject * __must_check kobject_create_and_add(const char *name, struct kobject *parent); Loading @@ -103,9 +104,6 @@ extern void kobject_unregister(struct kobject *); extern struct kobject * kobject_get(struct kobject *); extern void kobject_put(struct kobject *); extern struct kobject *kobject_kset_add_dir(struct kset *kset, struct kobject *, const char *); extern char * kobject_get_path(struct kobject *, gfp_t); struct kobj_type { Loading
lib/kobject.c +5 −32 Original line number Diff line number Diff line Loading @@ -629,15 +629,18 @@ static struct kobj_type dynamic_kobj_ktype = { .release = dynamic_kobj_release, }; /* /** * kobject_create - create a struct kobject dynamically * * This function creates a kobject structure dynamically and sets it up * to be a "dynamic" kobject with a default release function set up. * * If the kobject was not able to be created, NULL will be returned. * The kobject structure returned from here must be cleaned up with a * call to kobject_put() and not kfree(), as kobject_init_ng() has * already been called on this structure. */ static struct kobject *kobject_create(void) struct kobject *kobject_create(void) { struct kobject *kobj; Loading Loading @@ -682,36 +685,6 @@ struct kobject *kobject_create_and_add(const char *name, struct kobject *parent) } EXPORT_SYMBOL_GPL(kobject_create_and_add); /** * kobject_kset_add_dir - add sub directory of object. * @kset: kset the directory is belongs to. * @parent: object in which a directory is created. * @name: directory name. * * Add a plain directory object as child of given object. */ struct kobject *kobject_kset_add_dir(struct kset *kset, struct kobject *parent, const char *name) { struct kobject *k; int ret; k = kobject_create(); if (!k) return NULL; k->kset = kset; ret = kobject_add_ng(k, parent, "%s", name); if (ret < 0) { printk(KERN_WARNING "%s: kobject_add error: %d\n", __func__, ret); kobject_put(k); k = NULL; } return k; } /** * kset_init - initialize a kset for use * @k: kset Loading