From: Greg KH <greg@kroah.com>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: Jonathan Corbet <corbet@lwn.net>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH/RFC] core: add a function to safely try to get device driver owner
Date: Mon, 29 Nov 2010 14:32:09 -0800 [thread overview]
Message-ID: <20101129223209.GB14663@kroah.com> (raw)
In-Reply-To: <Pine.LNX.4.64.1011292300300.27962@axis700.grange>
On Mon, Nov 29, 2010 at 11:10:50PM +0100, Guennadi Liakhovetski wrote:
> On Mon, 29 Nov 2010, Greg KH wrote:
>
> > On Mon, Nov 29, 2010 at 09:54:10PM +0100, Guennadi Liakhovetski wrote:
> > > Hi Jon
> > >
> > > On Mon, 29 Nov 2010, Jonathan Corbet wrote:
> > >
> > > > On Mon, 29 Nov 2010 20:43:28 +0100 (CET)
> > > > Guennadi Liakhovetski <g.liakhovetski@gmx.de> wrote:
> > > >
> > > > > When two drivers interoperate without an explicit dependency, it is often
> > > > > required to prevent one of them from being unloaded safely by dereferencing
> > > > > dev->driver->owner. This patch provides a generic function to do this in a
> > > > > race-free way.
> > > >
> > > > I must ask: why not, instead, make the dependency explicit? In
> > > > particular, this looks like an application for the proposed media
> > > > controller code, which is meant to model the connections between otherwise
> > > > independent devices. The fact that your example comes from V4L2 (which is
> > > > the current domain of the media controller) also argues that way.
> > >
> > > Sorry, don't see a good way to do this. This function is for a general
> > > dependency, where you don't have that driver, we are checking for register
> > > with us, so, the only way to get to it is via dev->driver->owner.
> >
> > Wait, what? The device is already bound to a driver, right, so why
> > would you care about "locking" the module into memory? What could this
> > possibly be used for?
>
> To protect against rmmod -> driver_unregister -> dev->driver = NULL?
But again, why would some other driver ever care about what some random
dev->driver would be?
> > > And I also don't want to move registering the device into the
> > > dependant driver and then wait (with a timeout) for a driver to probe
> > > with it... I just want to verify, whether a driver has attached to
> > > that device and whether I can lock it down.
> >
> > Who cares if a driver is attached to any device? And again, why would
> > you want to "lock it down"?
>
> In my case I have two platform devices: CEU and CSI2. In some cases (with
> parallel sensors) CEU operates on its own. With serial (CSI-2) camera
> sensors we need the CSI2 driver. So, I want to
> try_module_get(csi2_dev->driver->owner) the CSI2 driver from my CEU
> driver. This call can Oops if not done safely. Am I missing something? Is
> there an easier way to achieve the same?
Yes, from userspace load the module and then don't worry about it.
Don't ever think that poking around in a dev->driver field is safe at
all, it isn't. I should just go hide the thing from the rest of the
kernel to keep this from happening, now that you mention it...
thanks,
greg k-h
next prev parent reply other threads:[~2010-11-29 22:33 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-29 19:43 [PATCH/RFC] core: add a function to safely try to get device driver owner Guennadi Liakhovetski
2010-11-29 19:56 ` Greg KH
2010-11-29 20:11 ` Guennadi Liakhovetski
2010-11-29 20:17 ` Jonathan Corbet
2010-11-29 20:54 ` Guennadi Liakhovetski
2010-11-29 21:41 ` Greg KH
2010-11-29 22:10 ` Guennadi Liakhovetski
2010-11-29 22:28 ` Jonathan Corbet
2010-11-30 7:18 ` Guennadi Liakhovetski
2010-11-29 22:32 ` Greg KH [this message]
2010-11-29 23:11 ` Guennadi Liakhovetski
2010-11-30 16:56 ` Greg KH
2010-11-30 17:09 ` Guennadi Liakhovetski
2010-11-30 17:15 ` Greg KH
2010-11-30 17:55 ` Laurent Pinchart
2010-11-30 18:32 ` Greg KH
2010-11-30 20:43 ` Laurent Pinchart
2010-11-30 20:55 ` Greg KH
2010-11-30 22:19 ` Hans Verkuil
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=20101129223209.GB14663@kroah.com \
--to=greg@kroah.com \
--cc=corbet@lwn.net \
--cc=g.liakhovetski@gmx.de \
--cc=linux-kernel@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.