[PATCH] Small fixes to driver core

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>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Alan Stern and committed by Linus Torvalds 2b08c8d0 133747e8

+12 -17
+9 -12
drivers/base/bus.c
··· 133 133 decl_subsys(bus, &ktype_bus, NULL); 134 134 135 135 136 - /* Manually detach a device from it's associated driver. */ 136 + /* Manually detach a device from its associated driver. */ 137 137 static int driver_helper(struct device *dev, void *data) 138 138 { 139 139 const char *name = data; ··· 151 151 int err = -ENODEV; 152 152 153 153 dev = bus_find_device(bus, NULL, (void *)buf, driver_helper); 154 - if ((dev) && 155 - (dev->driver == drv)) { 154 + if (dev && dev->driver == drv) { 156 155 device_release_driver(dev); 157 156 err = count; 158 157 } 159 - if (err) 160 - return err; 161 - return count; 158 + put_device(dev); 159 + put_bus(bus); 160 + return err; 162 161 } 163 162 static DRIVER_ATTR(unbind, S_IWUSR, NULL, driver_unbind); 164 163 ··· 174 175 int err = -ENODEV; 175 176 176 177 dev = bus_find_device(bus, NULL, (void *)buf, driver_helper); 177 - if ((dev) && 178 - (dev->driver == NULL)) { 178 + if (dev && dev->driver == NULL) { 179 179 down(&dev->sem); 180 180 err = driver_probe_device(drv, dev); 181 181 up(&dev->sem); 182 - put_device(dev); 183 182 } 184 - if (err) 185 - return err; 186 - return count; 183 + put_device(dev); 184 + put_bus(bus); 185 + return err; 187 186 } 188 187 static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind); 189 188
+3 -5
drivers/base/dd.c
··· 62 62 * because we don't know the format of the ID structures, nor what 63 63 * is to be considered a match and what is not. 64 64 * 65 - * 66 65 * This function returns 1 if a match is found, an error if one 67 66 * occurs (that is not -ENODEV or -ENXIO), and 0 otherwise. 68 67 * ··· 157 158 driver_probe_device(drv, dev); 158 159 up(&dev->sem); 159 160 160 - 161 161 return 0; 162 162 } 163 163 ··· 223 225 struct device * dev; 224 226 225 227 for (;;) { 226 - spin_lock_irq(&drv->klist_devices.k_lock); 228 + spin_lock(&drv->klist_devices.k_lock); 227 229 if (list_empty(&drv->klist_devices.k_list)) { 228 - spin_unlock_irq(&drv->klist_devices.k_lock); 230 + spin_unlock(&drv->klist_devices.k_lock); 229 231 break; 230 232 } 231 233 dev = list_entry(drv->klist_devices.k_list.prev, 232 234 struct device, knode_driver.n_node); 233 235 get_device(dev); 234 - spin_unlock_irq(&drv->klist_devices.k_lock); 236 + spin_unlock(&drv->klist_devices.k_lock); 235 237 236 238 down(&dev->sem); 237 239 if (dev->driver == drv)