From: Ming Lei <[email protected]>
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 <[email protected]>
Reported-by: Guennadi Liakhovetski <[email protected]>
---
drivers/base/base.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/base/base.h b/drivers/base/base.h
index ddc9749..b528145 100644
--- a/drivers/base/base.h
+++ b/drivers/base/base.h
@@ -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)
{
- return drv->bus->match && drv->bus->match(dev, drv);
+ return drv->bus->match ? drv->bus->match(dev, drv) : 1;
}
extern void sysdev_shutdown(void);
--
1.6.0.GIT
On Fri, 27 Mar 2009, [email protected] wrote:
> From: Ming Lei <[email protected]>
>
> 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 <[email protected]>
> Reported-by: Guennadi Liakhovetski <[email protected]>
It looks like this patch is _still_ not in the mainline - now that we are
past rc2... Unless the problem has been fixed differently (I haven't
tested recent kernels), can we __please__ get it upstream?
Thanks
Guennadi
> ---
> drivers/base/base.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/base/base.h b/drivers/base/base.h
> index ddc9749..b528145 100644
> --- a/drivers/base/base.h
> +++ b/drivers/base/base.h
> @@ -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)
> {
> - return drv->bus->match && drv->bus->match(dev, drv);
> + return drv->bus->match ? drv->bus->match(dev, drv) : 1;
> }
>
> extern void sysdev_shutdown(void);
> --
> 1.6.0.GIT
>
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
On Fri, Apr 17, 2009 at 12:41:21PM +0200, Guennadi Liakhovetski wrote:
> On Fri, 27 Mar 2009, [email protected] wrote:
>
> > From: Ming Lei <[email protected]>
> >
> > 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 <[email protected]>
> > Reported-by: Guennadi Liakhovetski <[email protected]>
>
> It looks like this patch is _still_ not in the mainline - now that we are
> past rc2... Unless the problem has been fixed differently (I haven't
> tested recent kernels), can we __please__ get it upstream?
It's in my queue to go to Linus today.
thanks,
greg k-h