All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nuno Sa via B4 Relay <devnull+nuno.sa.analog.com@kernel.org>
To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-iio@vger.kernel.org
Cc: Olivier MOYSAN <olivier.moysan@foss.st.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Michael Hennerich <Michael.Hennerich@analog.com>,
	Nuno Sa <nuno.sa@analog.com>
Subject: [PATCH 06/12] iio: adc: ad9467: add mutex to struct ad9467_state
Date: Tue, 21 Nov 2023 11:20:19 +0100	[thread overview]
Message-ID: <20231121-dev-iio-backend-v1-6-6a3d542eba35@analog.com> (raw)
In-Reply-To: <20231121-dev-iio-backend-v1-0-6a3d542eba35@analog.com>

From: Nuno Sa <nuno.sa@analog.com>

When calling ad9467_set_scale(), multiple calls to ad9467_spi_write()
are done which means we need to properly protect the whole operation so
we are sure we will be in a sane state if two concurrent calls occur.

Fixes: ad6797120238 ("iio: adc: ad9467: add support AD9467 ADC")
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
---
 drivers/iio/adc/ad9467.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c
index 04474dbfa631..91821dee03b7 100644
--- a/drivers/iio/adc/ad9467.c
+++ b/drivers/iio/adc/ad9467.c
@@ -4,7 +4,7 @@
  *
  * Copyright 2012-2020 Analog Devices Inc.
  */
-
+#include <linux/cleanup.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/device.h>
@@ -122,6 +122,8 @@ struct ad9467_state {
 	unsigned int			output_mode;
 
 	struct gpio_desc		*pwrdown_gpio;
+	/* protect against concurrent accesses to the device */
+	struct mutex			lock;
 };
 
 static int ad9467_spi_read(struct spi_device *spi, unsigned int reg)
@@ -162,6 +164,7 @@ static int ad9467_reg_access(struct adi_axi_adc_conv *conv, unsigned int reg,
 	int ret;
 
 	if (!readval) {
+		guard(mutex)(&st->lock);
 		ret = ad9467_spi_write(spi, reg, writeval);
 		if (ret)
 			return ret;
@@ -310,6 +313,7 @@ static int ad9467_set_scale(struct adi_axi_adc_conv *conv, int val, int val2)
 		if (scale_val[0] != val || scale_val[1] != val2)
 			continue;
 
+		guard(mutex)(&st->lock);
 		ret = ad9467_spi_write(st->spi, AN877_ADC_REG_VREF,
 				       info->scale_table[i][1]);
 		if (ret < 0)

-- 
2.42.1


WARNING: multiple messages have this Message-ID (diff)
From: Nuno Sa <nuno.sa@analog.com>
To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	 linux-iio@vger.kernel.org
Cc: Olivier MOYSAN <olivier.moysan@foss.st.com>,
	 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 "Rafael J. Wysocki" <rafael@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	 Frank Rowand <frowand.list@gmail.com>,
	Jonathan Cameron <jic23@kernel.org>,
	 Lars-Peter Clausen <lars@metafoo.de>,
	 Michael Hennerich <Michael.Hennerich@analog.com>,
	 Nuno Sa <nuno.sa@analog.com>
Subject: [PATCH 06/12] iio: adc: ad9467: add mutex to struct ad9467_state
Date: Tue, 21 Nov 2023 11:20:19 +0100	[thread overview]
Message-ID: <20231121-dev-iio-backend-v1-6-6a3d542eba35@analog.com> (raw)
In-Reply-To: <20231121-dev-iio-backend-v1-0-6a3d542eba35@analog.com>

When calling ad9467_set_scale(), multiple calls to ad9467_spi_write()
are done which means we need to properly protect the whole operation so
we are sure we will be in a sane state if two concurrent calls occur.

Fixes: ad6797120238 ("iio: adc: ad9467: add support AD9467 ADC")
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
---
 drivers/iio/adc/ad9467.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c
index 04474dbfa631..91821dee03b7 100644
--- a/drivers/iio/adc/ad9467.c
+++ b/drivers/iio/adc/ad9467.c
@@ -4,7 +4,7 @@
  *
  * Copyright 2012-2020 Analog Devices Inc.
  */
-
+#include <linux/cleanup.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/device.h>
@@ -122,6 +122,8 @@ struct ad9467_state {
 	unsigned int			output_mode;
 
 	struct gpio_desc		*pwrdown_gpio;
+	/* protect against concurrent accesses to the device */
+	struct mutex			lock;
 };
 
 static int ad9467_spi_read(struct spi_device *spi, unsigned int reg)
@@ -162,6 +164,7 @@ static int ad9467_reg_access(struct adi_axi_adc_conv *conv, unsigned int reg,
 	int ret;
 
 	if (!readval) {
+		guard(mutex)(&st->lock);
 		ret = ad9467_spi_write(spi, reg, writeval);
 		if (ret)
 			return ret;
@@ -310,6 +313,7 @@ static int ad9467_set_scale(struct adi_axi_adc_conv *conv, int val, int val2)
 		if (scale_val[0] != val || scale_val[1] != val2)
 			continue;
 
+		guard(mutex)(&st->lock);
 		ret = ad9467_spi_write(st->spi, AN877_ADC_REG_VREF,
 				       info->scale_table[i][1]);
 		if (ret < 0)

-- 
2.42.1


  parent reply	other threads:[~2023-11-21 10:17 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-21 10:20 [PATCH 00/12] iio: add new backend framework Nuno Sa via B4 Relay
2023-11-21 10:20 ` Nuno Sa
2023-11-21 10:20 ` [PATCH 01/12] driver: core: allow modifying device_links flags Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-21 10:20 ` [PATCH 02/12] of: property: add device link support for io-backends Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-21 10:20 ` [PATCH 03/12] iio: add the IIO backend framework Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-12-04 15:38   ` Jonathan Cameron
2023-12-06 12:05     ` Nuno Sá
2023-12-06 17:15       ` Jonathan Cameron
2023-11-21 10:20 ` [PATCH 04/12] iio: adc: ad9467: fix reset gpio handling Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-30 21:41   ` David Lechner
2023-12-01  8:47     ` Nuno Sá
2023-12-01 17:01       ` David Lechner
2023-12-02  8:36         ` Nuno Sá
2023-12-04 15:15           ` Jonathan Cameron
2023-12-04 16:41             ` Nuno Sá
2023-11-21 10:20 ` [PATCH 05/12] iio: adc: ad9467: don't ignore error codes Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-30 21:44   ` David Lechner
2023-12-01  8:47     ` Nuno Sá
2023-12-04 15:19   ` Jonathan Cameron
2023-11-21 10:20 ` Nuno Sa via B4 Relay [this message]
2023-11-21 10:20   ` [PATCH 06/12] iio: adc: ad9467: add mutex to struct ad9467_state Nuno Sa
2023-11-30 21:50   ` David Lechner
2023-12-01  8:49     ` Nuno Sá
2023-12-04 15:21       ` Jonathan Cameron
2023-12-04 15:23   ` Jonathan Cameron
2023-12-04 16:10     ` Nuno Sá
2023-12-04 16:51       ` Jonathan Cameron
2023-11-21 10:20 ` [PATCH 07/12] iio: adc: ad9467: fix scale setting Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-21 10:20 ` [PATCH 08/12] iio: adc: ad9467: use spi_get_device_match_data() Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-21 10:20 ` [PATCH 09/12] iio: adc: ad9467: use chip_info variables instead of array Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-12-04 15:25   ` Jonathan Cameron
2023-12-04 16:24     ` Nuno Sá
2023-11-21 10:20 ` [PATCH 10/12] iio: adc: ad9467: convert to backend framework Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-22  0:54   ` kernel test robot
2023-11-30 23:30   ` David Lechner
2023-12-01  0:12     ` David Lechner
2023-12-01  9:08     ` Nuno Sá
2023-12-01 17:44       ` David Lechner
2023-12-02  8:46         ` Nuno Sá
2023-12-04  8:56           ` Nuno Sá
2023-12-04 15:48       ` Jonathan Cameron
2023-12-04 16:23         ` Nuno Sá
2023-12-04 16:57           ` Jonathan Cameron
2023-12-01  9:17     ` Nuno Sá
2023-11-21 10:20 ` [PATCH 11/12] iio: adc: adi-axi-adc: convert to regmap Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-12-04 15:51   ` Jonathan Cameron
2023-12-04 16:15     ` Nuno Sá
2023-11-21 10:20 ` [PATCH 12/12] iio: adc: adi-axi-adc: move to backend framework Nuno Sa via B4 Relay
2023-11-21 10:20   ` Nuno Sa
2023-11-21 23:27   ` kernel test robot
2023-11-25  7:42   ` kernel test robot
2023-11-30 23:33   ` David Lechner
2023-12-01  8:50     ` Nuno Sá
2023-11-23 17:36 ` [PATCH 00/12] iio: add new " Olivier MOYSAN
2023-11-24  9:15   ` Nuno Sá
2023-11-30 23:54 ` David Lechner
2023-12-01  8:41   ` Nuno Sá
2023-12-01  9:14     ` Nuno Sá
2023-12-02  3:53   ` David Lechner
2023-12-02  9:37     ` Nuno Sá
2023-12-02 16:16       ` David Lechner
2023-12-04 14:49         ` Jonathan Cameron

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=20231121-dev-iio-backend-v1-6-6a3d542eba35@analog.com \
    --to=devnull+nuno.sa.analog.com@kernel.org \
    --cc=Michael.Hennerich@analog.com \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --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 \
    --cc=olivier.moysan@foss.st.com \
    --cc=rafael@kernel.org \
    --cc=robh+dt@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.