diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2008-02-26 09:36:38 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-04-19 19:10:17 -0700 |
commit | c1ebdae514a356c71c09035f5141d94aab5e8fe4 (patch) | |
tree | 28a3a22b01e7b28b0e247a073711923169ddd528 /lib/kobject.c | |
parent | 3925e6fc1f774048404fdd910b0345b06c699eb4 (diff) | |
download | linux-c1ebdae514a356c71c09035f5141d94aab5e8fe4.tar.gz linux-c1ebdae514a356c71c09035f5141d94aab5e8fe4.tar.bz2 linux-c1ebdae514a356c71c09035f5141d94aab5e8fe4.zip |
kobject: catch kobjects that are not initialized
Add warnings to kobject_put() to catch kobjects that are cleaned up but
were never initialized to begin with.
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Hannes Reinecke <hare@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'lib/kobject.c')
-rw-r--r-- | lib/kobject.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/kobject.c b/lib/kobject.c index 0d03252f87a8..60ae9e817663 100644 --- a/lib/kobject.c +++ b/lib/kobject.c @@ -592,8 +592,15 @@ static void kobject_release(struct kref *kref) */ void kobject_put(struct kobject *kobj) { - if (kobj) + if (kobj) { + if (!kobj->state_initialized) { + printk(KERN_WARNING "kobject: '%s' (%p): is not " + "initialized, yet kobject_put() is being " + "called.\n", kobject_name(kobj), kobj); + WARN_ON(1); + } kref_put(&kobj->kref, kobject_release); + } } static void dynamic_kobj_release(struct kobject *kobj) |