From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
To: Ming Lei <tom.leiming@gmail.com>
Cc: kay.sievers@vrfy.org, Greg KH <greg@kroah.com>,
linux-kernel@vger.kernel.org, arjan@linux.intel.com
Subject: Re: [PATCH] driver core: check bus->match without holding device lock
Date: Wed, 25 Mar 2009 08:29:54 +0100 (CET) [thread overview]
Message-ID: <Pine.LNX.4.64.0903250817090.5590@axis700.grange> (raw)
In-Reply-To: <d82e647a0903241815l66abfc18ldbb26abd7d2c6b4@mail.gmail.com>
On Wed, 25 Mar 2009, Ming Lei wrote:
> >> @@ -190,21 +184,22 @@ int driver_probe_device(struct device_driver *drv, struct device *dev)
> >>
> >> if (!device_is_registered(dev))
> >> return -ENODEV;
> >> - if (drv->bus->match && !drv->bus->match(dev, drv))
> >> - goto done;
> >
> > Previously, if no .match() was specified, the normal probing has been
> > called.
> >
> >>
> >> pr_debug("bus: '%s': %s: matched device %s with driver %s\n",
> >> drv->bus->name, __func__, dev_name(dev), drv->name);
> >>
> >> ret = really_probe(dev, drv);
> >>
> >> -done:
> >> return ret;
> >> }
> >>
> >> static int __device_attach(struct device_driver *drv, void *data)
> >> {
> >> struct device *dev = data;
> >> +
> >> + if (!driver_match_device(drv, dev))
> >> + return 0;
> >> +
> >
> > Now, without .match() no probing is done. Is this an intended change and
> > soc-camera has to be fixed or is this a bug?
>
> It is not a driver-core bug, and soc-camera should be fixed.
So, you're saying this used to be a bug and it has been fixed by this
patch? Then why isn't this mentioned in the commit message? The commit
text seems to suggest, that this patch shouldn't introduce any change in
behaviour, but it does. So, before .match == NULL lead to .probe() being
called, and now it doesn't anymore?
And in which way should soc-camera be fixed? Just provide a dummy match
with just "return 1;" in it?
> >> diff --git a/include/linux/device.h b/include/linux/device.h
> >> index 45e5b19..3c61315 100644
> >> --- a/include/linux/device.h
> >> +++ b/include/linux/device.h
> >> @@ -466,6 +466,12 @@ static inline int device_is_registered(struct device *dev)
> >> return dev->kobj.state_in_sysfs;
> >> }
> >>
> >> +static inline int driver_match_device(struct device_driver *drv,
> >> + struct device *dev)
> >> +{
> >> + return drv->bus->match && drv->bus->match(dev, drv);
> >> +}
> >> +
> >> void driver_init(void);
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
next prev parent reply other threads:[~2009-03-25 7:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-20 13:34 tom.leiming
2009-01-20 14:21 ` Cornelia Huck
2009-01-21 15:00 ` Ming Lei
2009-03-24 23:46 ` Guennadi Liakhovetski
2009-03-25 1:15 ` Ming Lei
2009-03-25 7:29 ` Guennadi Liakhovetski [this message]
2009-03-25 10:13 ` Ming Lei
2009-03-25 10:23 ` Guennadi Liakhovetski
2009-03-25 15:15 ` Ming Lei
2009-03-26 15:46 ` Ming Lei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.0903250817090.5590@axis700.grange \
--to=g.liakhovetski@gmx.de \
--cc=arjan@linux.intel.com \
--cc=greg@kroah.com \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tom.leiming@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®