2009-03-27 13:50:22

by Ming Lei

[permalink] [raw]
Subject: [PATCH] driver core:fix driver_match_device

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


2009-04-17 10:41:25

by Guennadi Liakhovetski

[permalink] [raw]
Subject: Re: [PATCH] driver core:fix driver_match_device

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

2009-04-17 15:37:40

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] driver core:fix driver_match_device

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