> From: Jonathan Cameron > > This driver caused a false positive with __cond_lock() style solution > but is fine with the simple boolean return approach now used. > > Signed-off-by: Jonathan Cameron > Cc: Lorenzo Bianconi Acked-by: Lorenzo Bianconi > --- > drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > index 4fdcc2acc94e..670cd217eb50 100644 > --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > @@ -1804,12 +1804,11 @@ static int st_lsm6dsx_read_raw(struct iio_dev *iio_dev, > > switch (mask) { > case IIO_CHAN_INFO_RAW: > - ret = iio_device_claim_direct_mode(iio_dev); > - if (ret) > - break; > + if (!iio_device_claim_direct(iio_dev)) > + return -EBUSY; > > ret = st_lsm6dsx_read_oneshot(sensor, ch->address, val); > - iio_device_release_direct_mode(iio_dev); > + iio_device_release_direct(iio_dev); > break; > case IIO_CHAN_INFO_SAMP_FREQ: > *val = sensor->odr / 1000; > @@ -1834,11 +1833,10 @@ static int st_lsm6dsx_write_raw(struct iio_dev *iio_dev, > int val, int val2, long mask) > { > struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev); > - int err; > + int err = 0; > > - err = iio_device_claim_direct_mode(iio_dev); > - if (err) > - return err; > + if (!iio_device_claim_direct(iio_dev)) > + return -EBUSY; > > switch (mask) { > case IIO_CHAN_INFO_SCALE: > @@ -1860,7 +1858,7 @@ static int st_lsm6dsx_write_raw(struct iio_dev *iio_dev, > break; > } > > - iio_device_release_direct_mode(iio_dev); > + iio_device_release_direct(iio_dev); > > return err; > } > -- > 2.48.1 >