Re: [PATCH] iio: Simplify IIO provider access locking mechanism

Ivan T. Ivanov
2015-01-12T13:54:59Z

On Fri, 2015-01-09 at 17:16 +0100, Lars-Peter Clausen wrote:
> On 01/09/2015 05:14 PM, Ivan T. Ivanov wrote:
> > On Fri, 2015-01-09 at 16:54 +0100, Lars-Peter Clausen wrote:
> > > On 01/09/2015 04:50 PM, Ivan T. Ivanov wrote:
> > > > On Fri, 2015-01-09 at 16:41 +0100, Lars-Peter Clausen wrote:
> > > > > On 01/09/2015 04:38 PM, Ivan T. Ivanov wrote:
> > > > > > Instead of checking whether provider module is still
> > > > > > loaded on every access to device just lock module to
> > > > > > memory when client get reference to provider device.
> > > > > >
> > > > >
> > > > > This has nothing to do with the module, it's about the device. In the Linux
> > > > > device driver model as device can be unbound at any time and the IIO
> > > > > framework needs to handle this.
> > > > >
> > > >
> > > > Hm. Probably i am missing something here, but is this
> > > > still true if we have reference to device structure?
> > >
> > > Yes, that only prevents the memory of device from being freed. But the
> > > device can still be unbound from the driver.
> > >
> > > Think of e.g. a USB device that is pulled from the USB connector. Nothing
> > > you can do in software about having the device disappear.
> > >
> >
> > Agree, but I think that the patch is still valid. Module
> > have to be pinned in memory as long as there are device
> > driver users.
>
> No, the idea of the Linux driver model is that you can remove the module of
> a driver at any time, which will unbind the device from the driver. Once you
> reinsert the module the device will be re-bound to the driver.

I will say that device can be unbind at any time and not that module be can
unload at any time. But yes, and I'm not saying the opposite. There are a
lot of examples in kernel, where you can not unload driver if it is used by
another driver. See kernel-haking.tmpl.

Probably I am still missing something :-)

Ivan