public inbox for linux-iio@vger.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@intel.com>
To: Archit Anant <architanant5@gmail.com>
Cc: jic23@kernel.org, dlechner@baylibre.com, lars@metafoo.de,
	Michael.Hennerich@analog.com, nuno.sa@analog.com,
	andy@kernel.org, linux-iio@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 4/4] iio: adc: ad799x: use devm_iio_device_register and drop remove()
Date: Thu, 26 Mar 2026 21:15:41 +0200	[thread overview]
Message-ID: <acWF3erQXdxlxGAH@ashevche-desk.local> (raw)
In-Reply-To: <20260326180529.19154-5-architanant5@gmail.com>

On Thu, Mar 26, 2026 at 11:35:29PM +0530, Archit Anant wrote:
> Convert the driver to use the device-managed versions of
> iio_device_register(), iio_triggered_buffer_setup(), and mutex_init().
> 
> Use devm_add_action_or_reset() to ensure that the VCC and VREF
> regulators are disabled safely and in the correct order during
> driver teardown or probe failure.
> 
> Because all resources (buffer, regulators, IRQs, IIO device, mutex)
> are now fully managed by the devm core, the unwinding order is
> guaranteed to be correct (reverse order of allocation). We can now
> safely remove all manual error handling goto labels in ad799x_probe()
> and delete the ad799x_remove() function entirely.
> 
> This eliminates boilerplate code and prevents potential resource leaks.

...

> -	mutex_init(&st->lock);
> -
> -	ret = iio_device_register(indio_dev);
> +	ret = devm_mutex_init(dev, &st->lock);

Looking at how far from the start of probe this is done, it's prone to problems.
What we need is to decouple this change and move mutex to be enabled before any
interrupts or other async events may happen.

>  	if (ret)
> -		goto error_cleanup_ring;
> -
> -	return 0;
> -
> -error_cleanup_ring:
> -	iio_triggered_buffer_cleanup(indio_dev);
> -error_disable_vref:
> -	if (st->vref)
> -		regulator_disable(st->vref);
> -error_disable_reg:
> -	regulator_disable(st->reg);
> -
> -	return ret;
> -}


-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2026-03-26 19:15 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-26 18:05 [PATCH v6 0/4] iio: adc: ad799x: modernize resource management Archit Anant
2026-03-26 18:05 ` [PATCH v6 1/4] iio: adc: ad799x: use local device pointer in probe Archit Anant
2026-03-26 18:05 ` [PATCH v6 2/4] iio: adc: ad799x: use a static buffer for scan data Archit Anant
2026-03-26 19:11   ` Andy Shevchenko
2026-03-26 18:05 ` [PATCH v6 3/4] iio: adc: ad799x: cache regulator voltages during probe Archit Anant
2026-03-26 19:12   ` Andy Shevchenko
2026-03-28 10:56     ` Archit Anant
2026-03-26 18:05 ` [PATCH v6 4/4] iio: adc: ad799x: use devm_iio_device_register and drop remove() Archit Anant
2026-03-26 19:15   ` Andy Shevchenko [this message]
2026-03-28 11:13     ` Archit Anant

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=acWF3erQXdxlxGAH@ashevche-desk.local \
    --to=andriy.shevchenko@intel.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=andy@kernel.org \
    --cc=architanant5@gmail.com \
    --cc=dlechner@baylibre.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox