lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0903250817090.5590@axis700.grange>
Date:	Wed, 25 Mar 2009 08:29:54 +0100 (CET)
From:	Guennadi Liakhovetski <g.liakhovetski@....de>
To:	Ming Lei <tom.leiming@...il.com>
cc:	kay.sievers@...y.org, Greg KH <greg@...ah.com>,
	linux-kernel@...r.kernel.org, arjan@...ux.intel.com
Subject: Re: [PATCH] driver core: check bus->match without holding device
 lock

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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ