Explorar el Código

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>
Greg Kroah-Hartman hace 17 años
padre
commit
c1ebdae514
Se han modificado 1 ficheros con 8 adiciones y 1 borrados
  1. 8 1
      lib/kobject.c

+ 8 - 1
lib/kobject.c

@@ -592,8 +592,15 @@ static void kobject_release(struct kref *kref)
  */
  */
 void kobject_put(struct kobject *kobj)
 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);
 		kref_put(&kobj->kref, kobject_release);
+	}
 }
 }
 
 
 static void dynamic_kobj_release(struct kobject *kobj)
 static void dynamic_kobj_release(struct kobject *kobj)