|
@@ -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 class_device_rename(struct class_device *class_dev, char *new_name)
|
|
{
|
|
{
|
|
int error = 0;
|
|
int error = 0;
|
|
|
|
+ char *old_class_name = NULL, *new_class_name = NULL;
|
|
|
|
|
|
class_dev = class_device_get(class_dev);
|
|
class_dev = class_device_get(class_dev);
|
|
if (!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,
|
|
pr_debug("CLASS: renaming '%s' to '%s'\n", class_dev->class_id,
|
|
new_name);
|
|
new_name);
|
|
|
|
|
|
|
|
+ if (class_dev->dev)
|
|
|
|
+ old_class_name = make_class_name(class_dev);
|
|
|
|
+
|
|
strlcpy(class_dev->class_id, new_name, KOBJ_NAME_LEN);
|
|
strlcpy(class_dev->class_id, new_name, KOBJ_NAME_LEN);
|
|
|
|
|
|
error = kobject_rename(&class_dev->kobj, new_name);
|
|
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);
|
|
class_device_put(class_dev);
|
|
|
|
|
|
|
|
+ kfree(old_class_name);
|
|
|
|
+ kfree(new_class_name);
|
|
|
|
+
|
|
return error;
|
|
return error;
|
|
}
|
|
}
|
|
|
|
|