Re: [PATCH v3 1/7] iio: core: Add and export __iio_dev_mode_lock()

Kurt Borja
2026-01-17T19:33:09Z

On Fri Jan 16, 2026 at 3:18 PM -05, Jonathan Cameron wrote:
> On Tue, 06 Jan 2026 03:06:56 -0500
> Kurt Borja <kuurtb@gmail.com> wrote:
>
>> Add unconditional wrappers around the internal IIO mode lock.
>>
>> As mentioned in the documentation, this is not meant to be used by
>> drivers, instead this will aid in the eventual addition of cleanup
>> classes around conditional locks.
>>
>> Signed-off-by: Kurt Borja <kuurtb@gmail.com>
> Hi Kurt,
>
> I'm being a bit conservative in looking to apply this so apologies
> if it seems like I'm ignoring you! I wanted to give plenty of time
> for others to take a look.

Hi Jonathan,

Oh -- don't worry. It's understandable for API changes. Thanks for
clarifying!

>
> A few comments, but if we go with this version I'll tweak the
> punctuation if I remember whilst applying.

I will fix the ones you mentioned here. Apologies if there is more.

...

>> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
>> index 872ebdf0dd77..aecda887d833 100644
>> --- a/include/linux/iio/iio.h
>> +++ b/include/linux/iio/iio.h
>> @@ -661,6 +661,9 @@ void iio_device_unregister(struct iio_dev *indio_dev);
>> int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev,
>> struct module *this_mod);
>> int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp);
>> +
>> +void __iio_dev_mode_lock(struct iio_dev *indio_dev) __acquires(indio_dev);
>> +void __iio_dev_mode_unlock(struct iio_dev *indio_dev) __releases(indio_dev);
> This is an interesting notation choice as there are several locks embedded
> in iio_devs but I think it is the only one we want to expose so fair enough
> if we don't see any false warnings from this!

The previous implementation also used __acquire(indio_dev) and I do
believe is the best choice, for the reasons you mentioned. Also the
mlock is inside iio_dev_opaque and we don't have access to that in
iio.h.

>
> Jonathan
>
>> bool __iio_device_claim_direct(struct iio_dev *indio_dev);
>> void __iio_device_release_direct(struct iio_dev *indio_dev);
>>
>>

--
Thanks,
~ Kurt