driver core: fix driver_match_device
authorMing Lei <tom.leiming@gmail.com>
Fri, 27 Mar 2009 13:50:00 +0000 (21:50 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 16 Apr 2009 23:17:09 +0000 (16:17 -0700)
This patch fixes a bug introduced in commit
49b420a13ff95b449947181190b08367348e3e1b.

If a instance of bus_type doesn't have  .match method,
all .probe of drivers in the bus should be called, or else
the .probe have not a chance to be called.

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/base/base.h

index ddc9749..b528145 100644 (file)
@@ -115,7 +115,7 @@ extern int driver_probe_device(struct device_driver *drv, struct device *dev);
 static inline int driver_match_device(struct device_driver *drv,
                                      struct device *dev)
 {
 static inline int driver_match_device(struct device_driver *drv,
                                      struct device *dev)
 {
-       return drv->bus->match && drv->bus->match(dev, drv);
+       return drv->bus->match ? drv->bus->match(dev, drv) : 1;
 }
 
 extern void sysdev_shutdown(void);
 }
 
 extern void sysdev_shutdown(void);