diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-17 15:50:35 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-17 15:50:35 -0800 |
commit | a660c1509ae85d386ab886c2627c8bc05933e0f3 (patch) | |
tree | a3e76f3f4e58e3d0a0fc5d3d137e522fe3a35feb /driver | |
parent | 9472c47f6199ce19729ce72ea447d5c78f3a961a (diff) | |
download | patches-a660c1509ae85d386ab886c2627c8bc05933e0f3.tar.gz |
pci usb and driver core fixes
Diffstat (limited to 'driver')
-rw-r--r-- | driver/small-fixups-to-driver-core.patch | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/driver/small-fixups-to-driver-core.patch b/driver/small-fixups-to-driver-core.patch new file mode 100644 index 0000000000000..e618742b2bfde --- /dev/null +++ b/driver/small-fixups-to-driver-core.patch @@ -0,0 +1,114 @@ +From stern@rowland.harvard.edu Thu Nov 17 11:50:20 2005 +Date: Thu, 17 Nov 2005 15:04:42 -0500 (EST) +From: Alan Stern <stern@rowland.harvard.edu> +To: Greg KH <greg@kroah.com> +cc: Patrick Mochel <mochel@digitalimplant.org> +Subject: [PATCH] Small fixups to driver core +Message-ID: <Pine.LNX.4.44L0.0511171444400.4452-100000@iolanthe.rowland.org> + + +This patch (as603) makes a few small fixes to the driver core: + +Change spin_lock_irq for a klist lock to spin_lock; + +Fix reference count leaks; + +Minor spelling and formatting changes. + +Signed-off-by: Alan Stern <stern@rowland.harvard.edu> +Acked-by Patrick Mochel <mochel@digitalimplant.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/base/bus.c | 21 +++++++++------------ + drivers/base/dd.c | 8 +++----- + 2 files changed, 12 insertions(+), 17 deletions(-) + +--- gregkh-2.6.orig/drivers/base/bus.c ++++ gregkh-2.6/drivers/base/bus.c +@@ -133,7 +133,7 @@ static struct kobj_type ktype_bus = { + decl_subsys(bus, &ktype_bus, NULL); + + +-/* Manually detach a device from it's associated driver. */ ++/* Manually detach a device from its associated driver. */ + static int driver_helper(struct device *dev, void *data) + { + const char *name = data; +@@ -151,14 +151,13 @@ static ssize_t driver_unbind(struct devi + int err = -ENODEV; + + dev = bus_find_device(bus, NULL, (void *)buf, driver_helper); +- if ((dev) && +- (dev->driver == drv)) { ++ if (dev && dev->driver == drv) { + device_release_driver(dev); + err = count; + } +- if (err) +- return err; +- return count; ++ put_device(dev); ++ put_bus(bus); ++ return err; + } + static DRIVER_ATTR(unbind, S_IWUSR, NULL, driver_unbind); + +@@ -175,16 +174,14 @@ static ssize_t driver_bind(struct device + int err = -ENODEV; + + dev = bus_find_device(bus, NULL, (void *)buf, driver_helper); +- if ((dev) && +- (dev->driver == NULL)) { ++ if (dev && dev->driver == NULL) { + down(&dev->sem); + err = driver_probe_device(drv, dev); + up(&dev->sem); +- put_device(dev); + } +- if (err) +- return err; +- return count; ++ put_device(dev); ++ put_bus(bus); ++ return err; + } + static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind); + +--- gregkh-2.6.orig/drivers/base/dd.c ++++ gregkh-2.6/drivers/base/dd.c +@@ -62,7 +62,6 @@ void device_bind_driver(struct device * + * because we don't know the format of the ID structures, nor what + * is to be considered a match and what is not. + * +- * + * This function returns 1 if a match is found, an error if one + * occurs (that is not -ENODEV or -ENXIO), and 0 otherwise. + * +@@ -158,7 +157,6 @@ static int __driver_attach(struct device + driver_probe_device(drv, dev); + up(&dev->sem); + +- + return 0; + } + +@@ -225,15 +223,15 @@ void driver_detach(struct device_driver + struct device * dev; + + for (;;) { +- spin_lock_irq(&drv->klist_devices.k_lock); ++ spin_lock(&drv->klist_devices.k_lock); + if (list_empty(&drv->klist_devices.k_list)) { +- spin_unlock_irq(&drv->klist_devices.k_lock); ++ spin_unlock(&drv->klist_devices.k_lock); + break; + } + dev = list_entry(drv->klist_devices.k_list.prev, + struct device, knode_driver.n_node); + get_device(dev); +- spin_unlock_irq(&drv->klist_devices.k_lock); ++ spin_unlock(&drv->klist_devices.k_lock); + + down(&dev->sem); + if (dev->driver == drv) |