Re: [PATCH 05/27] iio: proximity: sx9310: Stop using iio_device_claim_direct_scoped()

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

 



On Tue, Feb 4, 2025 at 12:03 PM Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>
> From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
>
> This complex cleanup.h use case of conditional guards has proved
> to be more trouble that it is worth in terms of false positive compiler
> warnings and hard to read code.
>
> Move directly to the new claim/release_direct() that allow sparse
> to check for unbalanced context.
>
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
> Cc: Gwendal Grignou <gwendal@xxxxxxxxxxxx>
Reviewed-by: Gwendal Grignou <gwendal@xxxxxxxxxxxx>
> ---
>  drivers/iio/proximity/sx9310.c | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iio/proximity/sx9310.c b/drivers/iio/proximity/sx9310.c
> index 0d7f0518d4fb..b60707eba39d 100644
> --- a/drivers/iio/proximity/sx9310.c
> +++ b/drivers/iio/proximity/sx9310.c
> @@ -337,19 +337,26 @@ static int sx9310_read_raw(struct iio_dev *indio_dev,
>                            int *val2, long mask)
>  {
>         struct sx_common_data *data = iio_priv(indio_dev);
> +       int ret;
>
>         if (chan->type != IIO_PROXIMITY)
>                 return -EINVAL;
>
>         switch (mask) {
>         case IIO_CHAN_INFO_RAW:
> -               iio_device_claim_direct_scoped(return -EBUSY, indio_dev)
> -                       return sx_common_read_proximity(data, chan, val);
> -               unreachable();
> +               if (!iio_device_claim_direct(indio_dev))
> +                       return -EBUSY;
> +
> +               ret = sx_common_read_proximity(data, chan, val);
> +               iio_device_release_direct(indio_dev);
> +               return ret;
>         case IIO_CHAN_INFO_HARDWAREGAIN:
> -               iio_device_claim_direct_scoped(return -EBUSY, indio_dev)
> -                       return sx9310_read_gain(data, chan, val);
> -               unreachable();
> +               if (!iio_device_claim_direct(indio_dev))
> +                       return -EBUSY;
> +
> +               ret = sx9310_read_gain(data, chan, val);
> +               iio_device_release_direct(indio_dev);
> +               return ret;
>         case IIO_CHAN_INFO_SAMP_FREQ:
>                 return sx9310_read_samp_freq(data, val, val2);
>         default:
> --
> 2.48.1
>





[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