public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: David Lechner <dlechner@baylibre.com>
Cc: "Sean Nyekjaer" <sean@geanix.com>,
	"Jean-Baptiste Maneyrol" <jean-baptiste.maneyrol@tdk.com>,
	rafael@kernel.org, "Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-pm@vger.kernel.org,
	"Jean-Baptiste Maneyrol" <jmaneyrol@invensense.com>,
	"Jonathan Cameron" <Jonathan.Cameron@huawei.com>
Subject: Re: [PATCH v3 5/5] iio: imu: inv_icm42600: use guard() to release mutexes
Date: Sun, 7 Sep 2025 14:20:34 +0100	[thread overview]
Message-ID: <20250907142034.5b000107@jic23-huawei> (raw)
In-Reply-To: <fbea7d45-bf92-4f6b-a464-0f7a6f921bde@baylibre.com>


> ...
> 
> > @@ -299,7 +298,7 @@ static int inv_icm42600_buffer_postenable(struct iio_dev *indio_dev)
> >  	struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev);
> >  	int ret;
> >  
> > -	mutex_lock(&st->lock);
> > +	guard(mutex)(&st->lock);
> >  
> >  	/* exit if FIFO is already on */
> >  	if (st->fifo.on) {
> > @@ -311,30 +310,29 @@ static int inv_icm42600_buffer_postenable(struct iio_dev *indio_dev)
> >  	ret = regmap_set_bits(st->map, INV_ICM42600_REG_INT_SOURCE0,
> >  			      INV_ICM42600_INT_SOURCE0_FIFO_THS_INT1_EN);
> >  	if (ret)
> > -		goto out_unlock;
> > +		return ret;
> >  
> >  	/* flush FIFO data */
> >  	ret = regmap_write(st->map, INV_ICM42600_REG_SIGNAL_PATH_RESET,
> >  			   INV_ICM42600_SIGNAL_PATH_RESET_FIFO_FLUSH);
> >  	if (ret)
> > -		goto out_unlock;
> > +		return ret;
> >  
> >  	/* set FIFO in streaming mode */
> >  	ret = regmap_write(st->map, INV_ICM42600_REG_FIFO_CONFIG,
> >  			   INV_ICM42600_FIFO_CONFIG_STREAM);
> >  	if (ret)
> > -		goto out_unlock;
> > +		return ret;
> >  
> >  	/* workaround: first read of FIFO count after reset is always 0 */
> >  	ret = regmap_bulk_read(st->map, INV_ICM42600_REG_FIFO_COUNT, st->buffer, 2);
> >  	if (ret)
> > -		goto out_unlock;
> > +		return ret;
> >  
> >  out_on:
> >  	/* increase FIFO on counter */
> >  	st->fifo.on++;  
> 
> I would be tempted to get rid of out_on as well even if we have to repeat
> `st->fifo.on++;` in two places.

There is strong guidance in cleanup.h on basically never mixing gotos
and cleanup (including guard).  It is probably fine here but some compilers
(gcc) are very bad at detecting uninitialized conditions that can happen with
gotos.  More generally Linus has expressed that if you need to mix the two
cleanup.h magic is not appropriate. Following David's suggestion the problem
is solved through duplication of that increment.

> 
> > -out_unlock:
> > -	mutex_unlock(&st->lock);
> > +
> >  	return ret;  
> 
> Can just return 0 here and simplify if (st->fifo.on).



      reply	other threads:[~2025-09-07 13:20 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-01  7:49 [PATCH v3 0/5] iio: imu: inv_icm42600: pm_runtime fixes + various changes Sean Nyekjaer
2025-09-01  7:49 ` [PATCH v3 1/5] iio: imu: inv_icm42600: Simplify pm_runtime setup Sean Nyekjaer
2025-09-01  7:49 ` [PATCH v3 2/5] iio: imu: inv_icm42600: Drop redundant pm_runtime reinitialization in resume Sean Nyekjaer
2025-09-01  7:49 ` [PATCH v3 3/5] iio: imu: inv_icm42600: Avoid configuring if already pm_runtime suspended Sean Nyekjaer
2025-09-01  7:49 ` [PATCH v3 4/5] iio: imu: inv_icm42600: Use devm_regulator_get_enable() for vdd regulator Sean Nyekjaer
2025-09-05 19:49   ` David Lechner
2025-09-07 13:26     ` Jonathan Cameron
2025-09-01  7:49 ` [PATCH v3 5/5] iio: imu: inv_icm42600: use guard() to release mutexes Sean Nyekjaer
2025-09-05 19:45   ` David Lechner
2025-09-07 13:20     ` Jonathan Cameron [this message]

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=20250907142034.5b000107@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=andy@kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jean-baptiste.maneyrol@tdk.com \
    --cc=jmaneyrol@invensense.com \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=rafael@kernel.org \
    --cc=sean@geanix.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