public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PATCH] Driver core fixes for 2.6.21-rc3
@ 2007-03-10  4:04 Greg KH
  2007-03-10  4:07 ` [PATCH 1/5] Revert "driver core: refcounting fix" Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2007-03-10  4:04 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=unknown-8bit, Size: 1333 bytes --]

Here are some driver core fixes for 2.6.21-rc3.

They fix the following thing:
  - fix reference counting bug when removing any driver module from the
    system by reverting a previous "fix".
  - allow older versions of HAL to find network devices even if
    CONFIG_SYSFS_DEPRECATED is disabled.
  - fix an oops when moving kobjects to the same destination location as
    they currently are caused by the bluetooth layer.
  - export a symbol to allow the wireless core to be built as a module -
    remove the devfs entry in the MAINTAINERS file.

All of these have been in the -mm tree.

Please pull from:
	master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6.git/

Patches will be sent as a follow-on to this message to lkml for people
to see.

thanks,

greg k-h


 MAINTAINERS         |    3 ---
 drivers/base/core.c |   23 ++++++++++++++---------
 kernel/module.c     |    6 ------
 lib/kobject.c       |    2 ++
 4 files changed, 16 insertions(+), 18 deletions(-)

---------------

Dmitriy Monakhov (1):
      kobject: new_device->kref wasn't putted after error in kobject_move()

Greg Kroah-Hartman (2):
      Revert "driver core: refcounting fix"
      Driver core: add device symlink back to sysfs

Johannes Berg (1):
      driver core: export device_rename

Jörn Engel (1):
      Remove devfs from MAINTAINERS


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/5] Revert "driver core: refcounting fix"
  2007-03-10  4:04 [GIT PATCH] Driver core fixes for 2.6.21-rc3 Greg KH
@ 2007-03-10  4:07 ` Greg Kroah-Hartman
  2007-03-10  4:07   ` [PATCH 2/5] Driver core: add device symlink back to sysfs Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2007-03-10  4:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman

This reverts commit 63ce18cfe685115ff8d341bae4c9204a79043cf0.

It was the incorrect fix and causes a reference counting bug whenever
any driver module is removed from the system. Mike Galbraith
<efault@gmx.de> is looking for the real fix for his problem.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 kernel/module.c |    6 ------
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/kernel/module.c b/kernel/module.c
index f77e893..fbc51de 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2419,12 +2419,6 @@ void module_remove_driver(struct device_driver *drv)
 			kfree(driver_name);
 		}
 	}
-	/*
-	 * Undo the additional reference we added in module_add_driver()
-	 * via kset_find_obj()
-	 */
-	if (drv->mod_name)
-		kobject_put(&drv->kobj);
 }
 EXPORT_SYMBOL(module_remove_driver);
 #endif
-- 
1.5.0.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/5] Driver core: add device symlink back to sysfs
  2007-03-10  4:07 ` [PATCH 1/5] Revert "driver core: refcounting fix" Greg Kroah-Hartman
@ 2007-03-10  4:07   ` Greg Kroah-Hartman
  2007-03-10  4:07     ` [PATCH 3/5] Remove devfs from MAINTAINERS Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2007-03-10  4:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: 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 <kay.sievers@vrfy.org>
Cc: Matt Mackall <mpm@selenic.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/5] Remove devfs from MAINTAINERS
  2007-03-10  4:07   ` [PATCH 2/5] Driver core: add device symlink back to sysfs Greg Kroah-Hartman
@ 2007-03-10  4:07     ` Greg Kroah-Hartman
  2007-03-10  4:07       ` [PATCH 4/5] driver core: export device_rename Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2007-03-10  4:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Jörn Engel, Greg Kroah-Hartman

From: Jörn Engel <joern@lazybastard.org>

Remove last remaining trace of devfs.

Signed-off-by: Jörn Engel <joern@wohnheim.fh-wedel.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 MAINTAINERS |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 9993b90..17555bb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1103,9 +1103,6 @@ W:	http://lanana.org/docs/device-list/index.html
 L:	linux-kernel@vger.kernel.org
 S:	Maintained
 
-DEVICE FILESYSTEM
-S:	Obsolete
-
 DIGI INTL. EPCA DRIVER
 P:	Digi International, Inc
 M:	Eng.Linux@digi.com
-- 
1.5.0.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/5] driver core: export device_rename
  2007-03-10  4:07     ` [PATCH 3/5] Remove devfs from MAINTAINERS Greg Kroah-Hartman
@ 2007-03-10  4:07       ` Greg Kroah-Hartman
  2007-03-10  4:07         ` [PATCH 5/5] kobject: new_device->kref wasn't putted after error in kobject_move() Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2007-03-10  4:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Johannes Berg, Greg Kroah-Hartman

From: Johannes Berg <johannes@sipsolutions.net>

In wireless we'd like to allow renaming of the phy devices we surface in
sysfs. The base wireless code, however, can be built modular and thus we
need device_rename exported.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/core.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index fb16f29..f191afe 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1065,7 +1065,7 @@ int device_rename(struct device *dev, char *new_name)
 
 	return error;
 }
-
+EXPORT_SYMBOL_GPL(device_rename);
 
 static int device_move_class_links(struct device *dev,
 				   struct device *old_parent,
-- 
1.5.0.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 5/5] kobject: new_device->kref wasn't putted after error in kobject_move()
  2007-03-10  4:07       ` [PATCH 4/5] driver core: export device_rename Greg Kroah-Hartman
@ 2007-03-10  4:07         ` Greg Kroah-Hartman
  0 siblings, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2007-03-10  4:07 UTC (permalink / raw)
  To: linux-kernel; +Cc: Dmitriy Monakhov, Monakhov Dmitriy, Greg Kroah-Hartman

From: Dmitriy Monakhov <dmonakhov@sw.ru>

If error happen we jump to "out" label, in this case new_device not yet
became the parent but it wasn't putted.

Signed-off-by: Monakhov Dmitriy <dmonakhov@openvz.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 lib/kobject.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/lib/kobject.c b/lib/kobject.c
index f4f6176..057921c 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -385,9 +385,11 @@ int kobject_move(struct kobject *kobj, struct kobject *new_parent)
 		goto out;
 	old_parent = kobj->parent;
 	kobj->parent = new_parent;
+	new_parent = NULL;
 	kobject_put(old_parent);
 	kobject_uevent_env(kobj, KOBJ_MOVE, envp);
 out:
+	kobject_put(new_parent);
 	kobject_put(kobj);
 	kfree(devpath_string);
 	kfree(devpath);
-- 
1.5.0.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-03-10  4:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-10  4:04 [GIT PATCH] Driver core fixes for 2.6.21-rc3 Greg KH
2007-03-10  4:07 ` [PATCH 1/5] Revert "driver core: refcounting fix" Greg Kroah-Hartman
2007-03-10  4:07   ` [PATCH 2/5] Driver core: add device symlink back to sysfs Greg Kroah-Hartman
2007-03-10  4:07     ` [PATCH 3/5] Remove devfs from MAINTAINERS Greg Kroah-Hartman
2007-03-10  4:07       ` [PATCH 4/5] driver core: export device_rename Greg Kroah-Hartman
2007-03-10  4:07         ` [PATCH 5/5] kobject: new_device->kref wasn't putted after error in kobject_move() Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox