driver core: platform: Use drv->driver.bus instead of assuming platform_bus_type
authorPatrick Pannuto <ppannuto@codeaurora.org>
Sat, 7 Aug 2010 00:12:41 +0000 (17:12 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 22 Oct 2010 17:16:42 +0000 (10:16 -0700)
In theory (although not *yet* in practice), a driver being passed
to platform_driver_probe might have driver.bus set to something
other than platform_bus_type. Locking drv->driver.bus is always
correct.

Signed-off-by: Patrick Pannuto <ppannuto@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/base/platform.c

index c6c933f..579906f 100644 (file)
@@ -488,12 +488,12 @@ int __init_or_module platform_driver_probe(struct platform_driver *drv,
         * if the probe was successful, and make sure any forced probes of
         * new devices fail.
         */
-       spin_lock(&platform_bus_type.p->klist_drivers.k_lock);
+       spin_lock(&drv->driver.bus->p->klist_drivers.k_lock);
        drv->probe = NULL;
        if (code == 0 && list_empty(&drv->driver.p->klist_devices.k_list))
                retval = -ENODEV;
        drv->driver.probe = platform_drv_probe_fail;
-       spin_unlock(&platform_bus_type.p->klist_drivers.k_lock);
+       spin_unlock(&drv->driver.bus->p->klist_drivers.k_lock);
 
        if (code != retval)
                platform_driver_unregister(drv);