[PATCH 2/5] Driver core: add device symlink back to sysfs
This moves the device symlink back to sysfs even if CONFIG_SYSFS_DEPRECATED is enabled as too many userspace programs (well, HAL), still rely on this link to be present. I will rework the ability for sysfs to change layouts like this in the future, but for now, this patch should fix people's network connections. Cc: Kay Sievers <[EMAIL PROTECTED]> Cc: Matt Mackall <[EMAIL PROTECTED]> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> --- drivers/base/core.c | 21 + 1 files changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index 89ebe36..fb16f29 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -584,17 +584,17 @@ int device_add(struct device *dev) if (dev->kobj.parent != >class->subsys.kset.kobj) sysfs_create_link(>class->subsys.kset.kobj, >kobj, dev->bus_id); -#ifdef CONFIG_SYSFS_DEPRECATED if (parent) { sysfs_create_link(>kobj, >parent->kobj, "device"); +#ifdef CONFIG_SYSFS_DEPRECATED class_name = make_class_name(dev->class->name, >kobj); if (class_name) sysfs_create_link(>parent->kobj, >kobj, class_name); - } #endif + } } if ((error = device_add_attrs(dev))) @@ -651,17 +651,17 @@ int device_add(struct device *dev) if (dev->kobj.parent != >class->subsys.kset.kobj) sysfs_remove_link(>class->subsys.kset.kobj, dev->bus_id); -#ifdef CONFIG_SYSFS_DEPRECATED if (parent) { +#ifdef CONFIG_SYSFS_DEPRECATED char *class_name = make_class_name(dev->class->name, >kobj); if (class_name) sysfs_remove_link(>parent->kobj, class_name); kfree(class_name); +#endif sysfs_remove_link(>kobj, "device"); } -#endif down(>class->sem); /* notify any interfaces that the device is now gone */ @@ -761,17 +761,17 @@ void device_del(struct device * dev) if (dev->kobj.parent != >class->subsys.kset.kobj) sysfs_remove_link(>class->subsys.kset.kobj, dev->bus_id); -#ifdef CONFIG_SYSFS_DEPRECATED if (parent) { +#ifdef CONFIG_SYSFS_DEPRECATED char *class_name = make_class_name(dev->class->name, >kobj); if (class_name) sysfs_remove_link(>parent->kobj, class_name); kfree(class_name); +#endif sysfs_remove_link(>kobj, "device"); } -#endif down(>class->sem); /* notify any interfaces that the device is now gone */ @@ -1071,8 +1071,8 @@ static int device_move_class_links(struct device *dev, struct device *old_parent, struct device *new_parent) { + int error = 0; #ifdef CONFIG_SYSFS_DEPRECATED - int error; char *class_name; class_name = make_class_name(dev->class->name, >kobj); @@ -1100,7 +1100,12 @@ out: kfree(class_name); return error; #else - return 0; + if (old_parent) + sysfs_remove_link(>kobj, "device"); + if (new_parent) + error = sysfs_create_link(>kobj, _parent->kobj, + "device"); + return error; #endif } -- 1.5.0.2 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 2/5] Driver core: add device symlink back to sysfs
This moves the device symlink back to sysfs even if CONFIG_SYSFS_DEPRECATED is enabled as too many userspace programs (well, HAL), still rely on this link to be present. I will rework the ability for sysfs to change layouts like this in the future, but for now, this patch should fix people's network connections. Cc: Kay Sievers [EMAIL PROTECTED] Cc: Matt Mackall [EMAIL PROTECTED] Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED] --- drivers/base/core.c | 21 + 1 files changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index 89ebe36..fb16f29 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -584,17 +584,17 @@ int device_add(struct device *dev) if (dev-kobj.parent != dev-class-subsys.kset.kobj) sysfs_create_link(dev-class-subsys.kset.kobj, dev-kobj, dev-bus_id); -#ifdef CONFIG_SYSFS_DEPRECATED if (parent) { sysfs_create_link(dev-kobj, dev-parent-kobj, device); +#ifdef CONFIG_SYSFS_DEPRECATED class_name = make_class_name(dev-class-name, dev-kobj); if (class_name) sysfs_create_link(dev-parent-kobj, dev-kobj, class_name); - } #endif + } } if ((error = device_add_attrs(dev))) @@ -651,17 +651,17 @@ int device_add(struct device *dev) if (dev-kobj.parent != dev-class-subsys.kset.kobj) sysfs_remove_link(dev-class-subsys.kset.kobj, dev-bus_id); -#ifdef CONFIG_SYSFS_DEPRECATED if (parent) { +#ifdef CONFIG_SYSFS_DEPRECATED char *class_name = make_class_name(dev-class-name, dev-kobj); if (class_name) sysfs_remove_link(dev-parent-kobj, class_name); kfree(class_name); +#endif sysfs_remove_link(dev-kobj, device); } -#endif down(dev-class-sem); /* notify any interfaces that the device is now gone */ @@ -761,17 +761,17 @@ void device_del(struct device * dev) if (dev-kobj.parent != dev-class-subsys.kset.kobj) sysfs_remove_link(dev-class-subsys.kset.kobj, dev-bus_id); -#ifdef CONFIG_SYSFS_DEPRECATED if (parent) { +#ifdef CONFIG_SYSFS_DEPRECATED char *class_name = make_class_name(dev-class-name, dev-kobj); if (class_name) sysfs_remove_link(dev-parent-kobj, class_name); kfree(class_name); +#endif sysfs_remove_link(dev-kobj, device); } -#endif down(dev-class-sem); /* notify any interfaces that the device is now gone */ @@ -1071,8 +1071,8 @@ static int device_move_class_links(struct device *dev, struct device *old_parent, struct device *new_parent) { + int error = 0; #ifdef CONFIG_SYSFS_DEPRECATED - int error; char *class_name; class_name = make_class_name(dev-class-name, dev-kobj); @@ -1100,7 +1100,12 @@ out: kfree(class_name); return error; #else - return 0; + if (old_parent) + sysfs_remove_link(dev-kobj, device); + if (new_parent) + error = sysfs_create_link(dev-kobj, new_parent-kobj, + device); + return error; #endif } -- 1.5.0.2 - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/