aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-03-31 12:10:28 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-31 12:10:28 -0800
commit80d534567378ce62ba8e2c51a3b6621e5b8b5605 (patch)
tree805322f31f88df173918bec787285835c33d1ccf /driver
parent7446377126dc0e69c4d60dd3edf557efdd150337 (diff)
downloadpatches-80d534567378ce62ba8e2c51a3b6621e5b8b5605.tar.gz
more patches
Diffstat (limited to 'driver')
-rw-r--r--driver/driver-core-safely-unbind-drivers-for-devices-not-on-a-bus.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/driver/driver-core-safely-unbind-drivers-for-devices-not-on-a-bus.patch b/driver/driver-core-safely-unbind-drivers-for-devices-not-on-a-bus.patch
new file mode 100644
index 0000000000000..ecf169c8dd357
--- /dev/null
+++ b/driver/driver-core-safely-unbind-drivers-for-devices-not-on-a-bus.patch
@@ -0,0 +1,30 @@
+From stern@rowland.harvard.edu Fri Mar 31 08:52:32 2006
+Date: Fri, 31 Mar 2006 11:52:25 -0500 (EST)
+From: Alan Stern <stern@rowland.harvard.edu>
+To: Greg KH <greg@kroah.com>
+Subject: driver core: safely unbind drivers for devices not on a bus
+Message-ID: <Pine.LNX.4.44L0.0603311146430.5091-100000@iolanthe.rowland.org>
+
+This patch (as667) changes the __device_release_driver() routine to
+prevent it from crashing when it runs across a device not on any bus.
+This seems logical, inasmuch as the corresponding bus_add_device()
+routine has an explicit check allowing it to accept such devices.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/base/dd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- gregkh-2.6.orig/drivers/base/dd.c
++++ gregkh-2.6/drivers/base/dd.c
+@@ -209,7 +209,7 @@ static void __device_release_driver(stru
+ sysfs_remove_link(&dev->kobj, "driver");
+ klist_remove(&dev->knode_driver);
+
+- if (dev->bus->remove)
++ if (dev->bus && dev->bus->remove)
+ dev->bus->remove(dev);
+ else if (drv->remove)
+ drv->remove(dev);