Skip to content

Commit

Permalink
Kobject: make kobject apis more robust in handling NULL pointers
Browse files Browse the repository at this point in the history
It should be ok to pass in NULL for some kobject functions, so add error
checking for all exported kobject functions to be more robust.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Greg Kroah-Hartman committed Feb 7, 2007
1 parent 5331be0 commit 31b9025
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions lib/kobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ EXPORT_SYMBOL_GPL(kobject_get_path);
*/
void kobject_init(struct kobject * kobj)
{
if (!kobj)
return;
kref_init(&kobj->kref);
INIT_LIST_HEAD(&kobj->entry);
init_waitqueue_head(&kobj->poll);
Expand Down Expand Up @@ -366,6 +368,8 @@ int kobject_move(struct kobject *kobj, struct kobject *new_parent)

void kobject_del(struct kobject * kobj)
{
if (!kobj)
return;
sysfs_remove_dir(kobj);
unlink(kobj);
}
Expand All @@ -377,6 +381,8 @@ void kobject_del(struct kobject * kobj)

void kobject_unregister(struct kobject * kobj)
{
if (!kobj)
return;
pr_debug("kobject %s: unregistering\n",kobject_name(kobj));
kobject_uevent(kobj, KOBJ_REMOVE);
kobject_del(kobj);
Expand Down Expand Up @@ -523,6 +529,8 @@ int kset_add(struct kset * k)

int kset_register(struct kset * k)
{
if (!k)
return -EINVAL;
kset_init(k);
return kset_add(k);
}
Expand All @@ -535,6 +543,8 @@ int kset_register(struct kset * k)

void kset_unregister(struct kset * k)
{
if (!k)
return;
kobject_unregister(&k->kobj);
}

Expand Down Expand Up @@ -586,6 +596,9 @@ int subsystem_register(struct subsystem * s)
{
int error;

if (!s)
return -EINVAL;

subsystem_init(s);
pr_debug("subsystem %s: registering\n",s->kset.kobj.name);

Expand All @@ -598,6 +611,8 @@ int subsystem_register(struct subsystem * s)

void subsystem_unregister(struct subsystem * s)
{
if (!s)
return;
pr_debug("subsystem %s: unregistering\n",s->kset.kobj.name);
kset_unregister(&s->kset);
}
Expand All @@ -612,6 +627,10 @@ void subsystem_unregister(struct subsystem * s)
int subsys_create_file(struct subsystem * s, struct subsys_attribute * a)
{
int error = 0;

if (!s || !a)
return -EINVAL;

if (subsys_get(s)) {
error = sysfs_create_file(&s->kset.kobj,&a->attr);
subsys_put(s);
Expand Down

0 comments on commit 31b9025

Please sign in to comment.