This patchset cleans all the drivers directly using the iio_device 'mlock'. This lock is private and should not be used outside the core (or by using proper helpers). Most of the conversions where straight, but there are some that really need extra looking. Mainly patches [13/15] and [14/15] were a bit hacky since iio_device_claim_direct_mode() does not fit 100%. The reason is that we want to check if the device is buffering and do something if it is (in which case the API return -EBUSY and released the lock. I just used a combinations of locks to get around this (hopefully I did not messed up). I was also not sure if patch [1/15] deserves a Fixes: tag but, to me, it is really fixing a potential race so I added it. Note that this series was only compiled tested using allyesconfig for ARM. I ran 'git grep' to make sure there were no more users of 'mlock'. Hopefully I covered them all... Nuno Sá (15): iio: adc: ad_sigma_delta: do not use internal iio_dev lock iio: adc: ad799x: do not use internal iio_dev lock iio: adc: axp288_adc: do not use internal iio_dev lock iio: adc: imx7d_adc: do not use internal iio_dev lock iio: adc: lpc32xx_adc: do not use internal iio_dev lock iio: adc: ltc2947-core: do not use internal iio_dev lock iio: adc: meson_saradc: do not use internal iio_dev lock iio: adc: rockchip_saradc: do not use internal iio_dev lock iio: adc: sc27xx_adc: do not use internal iio_dev lock iio: adc: vf610_adc: do not use internal iio_dev lock iio: common: scmi_iio: do not use internal iio_dev lock iio: fyro: itg3200_core: do not use internal iio_dev lock iio: health: max30100: do not use internal iio_dev lock iio: health: max30102: do not use internal iio_dev lock iio: core: move 'mlock' to 'struct iio_dev_opaque' drivers/iio/TODO | 3 --- drivers/iio/adc/ad799x.c | 18 ++++++++----- drivers/iio/adc/ad_sigma_delta.c | 8 +++--- drivers/iio/adc/axp288_adc.c | 8 ++++-- drivers/iio/adc/imx7d_adc.c | 13 ++++++---- drivers/iio/adc/lpc32xx_adc.c | 10 +++++--- drivers/iio/adc/ltc2497-core.c | 7 +++-- drivers/iio/adc/ltc2497.h | 2 ++ drivers/iio/adc/meson_saradc.c | 10 +++++--- drivers/iio/adc/rockchip_saradc.c | 14 ++++++---- drivers/iio/adc/sc27xx_adc.c | 12 ++++++--- drivers/iio/adc/vf610_adc.c | 30 ++++++++++++++-------- drivers/iio/common/scmi_sensors/scmi_iio.c | 9 +++++-- drivers/iio/gyro/itg3200_core.c | 9 ++++--- drivers/iio/health/max30100.c | 24 ++++++++++++----- drivers/iio/health/max30102.c | 25 +++++++++++++----- drivers/iio/industrialio-buffer.c | 29 ++++++++++++--------- drivers/iio/industrialio-core.c | 18 +++++++------ drivers/iio/industrialio-event.c | 4 +-- drivers/iio/industrialio-trigger.c | 12 ++++----- include/linux/iio/gyro/itg3200.h | 2 ++ include/linux/iio/iio-opaque.h | 2 ++ include/linux/iio/iio.h | 3 --- 23 files changed, 175 insertions(+), 97 deletions(-) -- 2.37.3