Re: Module get needed for iio_channel_get and friends

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 04/20/2015 12:06 PM, Lars-Peter Clausen wrote:
> On 04/15/2015 10:00 PM, Ezequiel Garcia wrote:
>> Jonathan, Lars:
>>
>> I've noticed that iio_channel_{get, get_all} don't call try_module_get
>> on the module associated to the indio_dev.
>>
>> This means that an IIO driver can be removed while having a consumer for
>> any of its channels.
> 

> The device can still be unbound from the driver, even if you pin the
> module. E.g. device hot-unplug.
> 

Hmm.. right.

>>
>> If each channel can have a completely different indio_dev, this means we
>> need to increase the refcount of the module on each indio_dev, right?
>>
> 
> I think we already handle this correctly. The device ref-count is
> incremented when a channel is requested. This means even when the device
> is unbound from the driver it will stay around until the channel is
> freed and the final reference is dropped. At the same time we set the
> info field of the IIO device to NULL when the driver is unbound from the
> driver and in iio_write_channel_raw() return -ENODEV when the info field
> is NULL.
> 

Oh, I see.

So this means there's no way to prevent an IIO driver/device from being
removed/unbinded if an IIO channel has been requested.

Somehow I thought the kernel was supposed to prevent such things, but
guess I was wrong.

Thanks,
-- 
Ezequiel
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux