[PATCH 2/5] Driver core: add device symlink back to sysfs

2007-03-09 Thread Greg Kroah-Hartman
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

2007-03-09 Thread Greg Kroah-Hartman
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/