]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - lib/kobject.c
kobject: replace '/' with '!' in name
[linux-2.6-omap-h63xx.git] / lib / kobject.c
index fd78740321639afdf10438ed1890a5a61be15c18..744401571ed76cbd48717f1aa1970804fc33cd9a 100644 (file)
@@ -216,22 +216,19 @@ static int kobject_add_internal(struct kobject *kobj)
 static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
                                  va_list vargs)
 {
-       va_list aq;
-       char *name;
+       const char *old_name = kobj->name;
+       char *s;
 
-       va_copy(aq, vargs);
-       name = kvasprintf(GFP_KERNEL, fmt, vargs);
-       va_end(aq);
-
-       if (!name)
+       kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs);
+       if (!kobj->name)
                return -ENOMEM;
 
-       /* Free the old name, if necessary. */
-       kfree(kobj->name);
-
-       /* Now, set the new name */
-       kobj->name = name;
+       /* ewww... some of these buggers have '/' in the name ... */
+       s = strchr(kobj->name, '/');
+       if (s)
+               s[0] = '!';
 
+       kfree(old_name);
        return 0;
 }
 
@@ -246,12 +243,12 @@ static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
  */
 int kobject_set_name(struct kobject *kobj, const char *fmt, ...)
 {
-       va_list args;
+       va_list vargs;
        int retval;
 
-       va_start(args, fmt);
-       retval = kobject_set_name_vargs(kobj, fmt, args);
-       va_end(args);
+       va_start(vargs, fmt);
+       retval = kobject_set_name_vargs(kobj, fmt, vargs);
+       va_end(vargs);
 
        return retval;
 }
@@ -301,12 +298,9 @@ EXPORT_SYMBOL(kobject_init);
 static int kobject_add_varg(struct kobject *kobj, struct kobject *parent,
                            const char *fmt, va_list vargs)
 {
-       va_list aq;
        int retval;
 
-       va_copy(aq, vargs);
-       retval = kobject_set_name_vargs(kobj, fmt, aq);
-       va_end(aq);
+       retval = kobject_set_name_vargs(kobj, fmt, vargs);
        if (retval) {
                printk(KERN_ERR "kobject: can not set name properly!\n");
                return retval;
@@ -451,6 +445,7 @@ out:
 
        return error;
 }
+EXPORT_SYMBOL_GPL(kobject_rename);
 
 /**
  * kobject_move - move object to another parent