mirror of https://lore.kernel.org/linux-amlogic/
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Rupesh Majhi <zoone.rupert@gmail.com>
Cc: "Alex Lanzano" <lanzano.alex@gmail.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Benson Leung" <bleung@chromium.org>,
	"David Lechner" <dlechner@baylibre.com>,
	"Guenter Roeck" <groeck@chromium.org>,
	"Jagath Jog J" <jagathjog1996@gmail.com>,
	"Javier Carrasco" <javier.carrasco.cruz@gmail.com>,
	"Jean-Baptiste Maneyrol" <jean-baptiste.maneyrol@tdk.com>,
	"Jerome Brunet" <jbrunet@baylibre.com>,
	"Jinseob Kim" <kimjinseob88@gmail.com>,
	"Kevin Hilman" <khilman@baylibre.com>,
	"Lorenzo Bianconi" <lorenzo@kernel.org>,
	"Martin Blumenstingl" <martin.blumenstingl@googlemail.com>,
	"Matti Vaittinen" <mazziesaccount@gmail.com>,
	"Neil Armstrong" <neil.armstrong@linaro.org>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Remi Buisson" <remi.buisson@tdk.com>,
	chrome-platform@lists.linux.dev,
	linux-amlogic@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-msm@vger.kernel.org, linux-iio@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Marco Elver" <elver@google.com>,
	"Bart Van Assche" <bvanassche@acm.org>
Subject: Re: [PATCH v4 2/9] iio: core: annotate the conditional mode claims
Date: Wed, 28 Oct 2026 03:18:34 +0000	[thread overview]
Message-ID: <20261028031834.2ff7e6bf@jic23-hlaptop> (raw)
In-Reply-To: <20261027124954.110697-3-zoone.rupert@gmail.com>

On Tue, 27 Oct 2026 14:49:47 +0200
Rupesh Majhi <zoone.rupert@gmail.com> wrote:

> iio_device_claim_direct() and iio_device_try_claim_buffer_mode() hold
> the mode lock only when they return true, but carry no annotation. With
> context analysis on, each caller that releases the claim is reported
> for releasing a lock it never took.
> 
> Mark both __cond_acquires(true, indio_dev), the token that
> __iio_dev_mode_lock() acquires. Sparse no longer reads these
> annotations, so drop the comment about it.
Hi Rupesh,

The history of the definitions of these being in the header at
all was to make them visible enough to sparse that it could
figure out the locking and 'mostly' give good coverage.

Given that's no longer necessary, maybe it makes sense to make
the implementations private. It doesn't really help us that
much as those nasty helpers are still needed for the
rarely used guard that claims the current mode.

So maybe it's worth this maybe not...  Anyhow, perhaps one for
another day given I don't think it helps this effort.

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index e9a5d1d905c1..04c194bdda87 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -2269,6 +2269,33 @@ void __iio_dev_mode_unlock(struct iio_dev *indio_dev)
 }
 EXPORT_SYMBOL_GPL(__iio_dev_mode_unlock);
 
+bool iio_device_claim_direct(struct iio_dev *indio_dev)
+{
+       __iio_dev_mode_lock(indio_dev);
+
+       if (iio_buffer_enabled(indio_dev)) {
+               __iio_dev_mode_unlock(indio_dev);
+               return false;
+       }
+
+       return true;
+}
+EXPORT_SYMBOL_GPL(iio_device_claim_direct);
+
+bool iio_device_try_claim_buffer_mode(struct iio_dev *indio_dev)
+       __cond_acquires(true, indio_dev)
+{
+       __iio_dev_mode_lock(indio_dev);
+
+       if (!iio_buffer_enabled(indio_dev)) {
+               __iio_dev_mode_unlock(indio_dev);
+               return false;
+       }
+
+       return true;
+}
+EXPORT_SYMBOL_GPL(iio_device_try_claim_buffer_mode);
+
 /**
  * iio_device_get_current_mode() - helper function providing read-only access to
  *                                the opaque @currentmode variable
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index ca91f5a64626..b9e4888e18bc 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -718,18 +718,7 @@ void __iio_dev_mode_unlock(struct iio_dev *indio_dev) __releases(indio_dev);
  *
  * Returns: true on success, false on failure.
  */
-static inline bool iio_device_claim_direct(struct iio_dev *indio_dev)
-       __cond_acquires(true, indio_dev)
-{
-       __iio_dev_mode_lock(indio_dev);
-
-       if (iio_buffer_enabled(indio_dev)) {
-               __iio_dev_mode_unlock(indio_dev);
-               return false;
-       }
-
-       return true;
-}
+bool iio_device_claim_direct(struct iio_dev *indio_dev) __cond_acquires(true, indio_dev);
 
 /**
  * iio_device_release_direct() - Releases claim on direct mode
@@ -753,18 +742,8 @@ static inline bool iio_device_claim_direct(struct iio_dev *indio_dev)
  *
  * Returns: true on success, false on failure.
  */
-static inline bool iio_device_try_claim_buffer_mode(struct iio_dev *indio_dev)
-       __cond_acquires(true, indio_dev)
-{
-       __iio_dev_mode_lock(indio_dev);
-
-       if (!iio_buffer_enabled(indio_dev)) {
-               __iio_dev_mode_unlock(indio_dev);
-               return false;
-       }
-
-       return true;
-}
+bool iio_device_try_claim_buffer_mode(struct iio_dev *indio_dev)
+  __cond_acquires(true, indio_dev);
 
 /**
  * iio_device_release_buffer_mode() - releases claim on buffer mode


> 
> Signed-off-by: Rupesh Majhi <zoone.rupert@gmail.com>
> ---
> Cc: Marco Elver <elver@google.com>
> Cc: Bart Van Assche <bvanassche@acm.org>
> 
>  include/linux/iio/iio.h | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> index 9b63785d5aec..ca91f5a64626 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -707,13 +707,6 @@ 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);
>  
> -/*
> - * Helper functions that allow claim and release of direct mode
> - * in a fashion that doesn't generate many false positives from sparse.
> - * Note this must remain static inline in the header so that sparse
> - * can see the __acquires() and __releases() annotations.
> - */
> -
>  /**
>   * iio_device_claim_direct() - Keep device in direct mode
>   * @indio_dev:	the iio_dev associated with the device
> @@ -726,6 +719,7 @@ void __iio_dev_mode_unlock(struct iio_dev *indio_dev) __releases(indio_dev);
>   * Returns: true on success, false on failure.
>   */
>  static inline bool iio_device_claim_direct(struct iio_dev *indio_dev)
> +	__cond_acquires(true, indio_dev)
>  {
>  	__iio_dev_mode_lock(indio_dev);
>  
> @@ -760,6 +754,7 @@ static inline bool iio_device_claim_direct(struct iio_dev *indio_dev)
>   * Returns: true on success, false on failure.
>   */
>  static inline bool iio_device_try_claim_buffer_mode(struct iio_dev *indio_dev)
> +	__cond_acquires(true, indio_dev)
>  {
>  	__iio_dev_mode_lock(indio_dev);
>  


_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

  reply	other threads:[~2026-10-28  3:18 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-27 12:49 [PATCH v4 0/9] iio: enable context analysis for all drivers Rupesh Majhi
2026-10-27 12:49 ` [PATCH v4 1/9] iio: adc: qcom-spmi-adc5-gen3: fix lock annotations on mutex helpers Rupesh Majhi
2026-10-27 12:49 ` [PATCH v4 2/9] iio: core: annotate the conditional mode claims Rupesh Majhi
2026-10-28  3:18   ` Jonathan Cameron [this message]
2026-10-28  3:25     ` Jonathan Cameron
2026-10-27 12:49 ` [PATCH v4 3/9] iio: core: mark the mode lock helpers __context_unsafe Rupesh Majhi
2026-10-27 12:49 ` [PATCH v4 4/9] iio: accel: kionix-kx022a: annotate the lock helpers Rupesh Majhi
2026-10-28  6:16   ` Matti Vaittinen
2026-10-27 12:49 ` [PATCH v4 5/9] iio: adc: meson_saradc: " Rupesh Majhi
2026-10-27 13:08   ` sashiko-bot
2026-10-27 12:49 ` [PATCH v4 6/9] iio: buffer-dma: annotate the queue " Rupesh Majhi
2026-10-27 12:49 ` [PATCH v4 7/9] iio: light: opt3001: mark the interrupt handler __context_unsafe Rupesh Majhi
2026-10-27 12:49 ` [PATCH v4 8/9] iio: light: veml6031x00: annotate the event enable helpers Rupesh Majhi
2026-10-27 16:52   ` Javier Carrasco
2026-10-27 12:49 ` [PATCH v4 9/9] iio: enable context analysis for all drivers Rupesh Majhi
2026-10-27 15:09   ` Kim Jinseob
2026-10-27 16:14   ` Andy Shevchenko
2026-10-27 17:21     ` Marco Elver

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=20261028031834.2ff7e6bf@jic23-hlaptop \
    --to=jic23@kernel.org \
    --cc=andy@kernel.org \
    --cc=bleung@chromium.org \
    --cc=bvanassche@acm.org \
    --cc=chrome-platform@lists.linux.dev \
    --cc=dlechner@baylibre.com \
    --cc=elver@google.com \
    --cc=groeck@chromium.org \
    --cc=jagathjog1996@gmail.com \
    --cc=javier.carrasco.cruz@gmail.com \
    --cc=jbrunet@baylibre.com \
    --cc=jean-baptiste.maneyrol@tdk.com \
    --cc=khilman@baylibre.com \
    --cc=kimjinseob88@gmail.com \
    --cc=lanzano.alex@gmail.com \
    --cc=linux-amlogic@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lorenzo@kernel.org \
    --cc=martin.blumenstingl@googlemail.com \
    --cc=mazziesaccount@gmail.com \
    --cc=neil.armstrong@linaro.org \
    --cc=nuno.sa@analog.com \
    --cc=remi.buisson@tdk.com \
    --cc=zoone.rupert@gmail.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

all inboxes | Powered by JetHome®