From 7e672f5edb63c651558c89ceb8f6971549c748fe Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 22 Sep 2005 00:47:36 -0700 Subject: [PATCH] --- yaml --- r: 9192 b: refs/heads/master c: 3e51377dc412df9d4933c4fd1a147b5b560abe10 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/base/class.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7de6a3230a37..6f5e28d03f2b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d305ef5d2a4e77bfa66160513f4a7494126a506b +refs/heads/master: 3e51377dc412df9d4933c4fd1a147b5b560abe10 diff --git a/trunk/drivers/base/class.c b/trunk/drivers/base/class.c index 3b112e3542f8..ce23dc8c18c5 100644 --- a/trunk/drivers/base/class.c +++ b/trunk/drivers/base/class.c @@ -669,6 +669,7 @@ void class_device_destroy(struct class *cls, dev_t devt) int class_device_rename(struct class_device *class_dev, char *new_name) { int error = 0; + char *old_class_name = NULL, *new_class_name = NULL; class_dev = class_device_get(class_dev); if (!class_dev) @@ -677,12 +678,24 @@ int class_device_rename(struct class_device *class_dev, char *new_name) pr_debug("CLASS: renaming '%s' to '%s'\n", class_dev->class_id, new_name); + if (class_dev->dev) + old_class_name = make_class_name(class_dev); + strlcpy(class_dev->class_id, new_name, KOBJ_NAME_LEN); error = kobject_rename(&class_dev->kobj, new_name); + if (class_dev->dev) { + new_class_name = make_class_name(class_dev); + sysfs_create_link(&class_dev->dev->kobj, &class_dev->kobj, + new_class_name); + sysfs_remove_link(&class_dev->dev->kobj, old_class_name); + } class_device_put(class_dev); + kfree(old_class_name); + kfree(new_class_name); + return error; }