summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-03-20 13:17:13 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-20 13:42:59 -0800
commitdcd0da002122a70fe1c625c0ca9f58c95aa33ebe (patch)
tree5560cdc189fa3ae7eeeabb71ef5c5a2b26d4909e /lib
parent4f2928d0a439553f0288d9483faf417430629635 (diff)
downloadlinux-dcd0da002122a70fe1c625c0ca9f58c95aa33ebe.tar.gz
[PATCH] Kobject: provide better warning messages when people do stupid things
Now that kobject_add() is used more than kobject_register() the kernel
wasn't always letting people know that they were doing something wrong.
This change fixes this.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/kobject.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/kobject.c b/lib/kobject.c
index efe67fa96a71..36668c8c3ea1 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -194,6 +194,17 @@ int kobject_add(struct kobject * kobj)
 		unlink(kobj);
 		if (parent)
 			kobject_put(parent);
+
+		/* be noisy on error issues */
+		if (error == -EEXIST)
+			printk("kobject_add failed for %s with -EEXIST, "
+			       "don't try to register things with the "
+			       "same name in the same directory.\n",
+			       kobject_name(kobj));
+		else
+			printk("kobject_add failed for %s (%d)\n",
+			       kobject_name(kobj), error);
+		dump_stack();
 	}
 
 	return error;
@@ -207,18 +218,13 @@ int kobject_add(struct kobject * kobj)
 
 int kobject_register(struct kobject * kobj)
 {
-	int error = 0;
+	int error = -EINVAL;
 	if (kobj) {
 		kobject_init(kobj);
 		error = kobject_add(kobj);
-		if (error) {
-			printk("kobject_register failed for %s (%d)\n",
-			       kobject_name(kobj),error);
-			dump_stack();
-		} else
+		if (!error)
 			kobject_uevent(kobj, KOBJ_ADD);
-	} else
-		error = -EINVAL;
+	}
 	return error;
 }