All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/5] iio: fix possible race condition during access of available info lists
@ 2024-10-21 12:54 Matteo Martelli
  2024-10-21 12:54 ` [PATCH v5 1/5] iio: core: add read_avail_release_resource callback to fix race Matteo Martelli
                   ` (5 more replies)
  0 siblings, 6 replies; 32+ messages in thread
From: Matteo Martelli @ 2024-10-21 12:54 UTC (permalink / raw)
  To: Jonathan Cameron, Lars-Peter Clausen, Michael Hennerich,
	Alisa-Dariana Roman, Christian Eggers, Peter Rosin, Paul Cercueil,
	Sebastian Reichel
  Cc: linux-iio, linux-kernel, linux-mips, linux-pm, Matteo Martelli

Some iio drivers currently share an available info list buffer that
might be changed while iio core prints it to sysfs. This could cause the
buffer shared with iio core to be corrupted. However, note that I was
able to trigger the race condition only by adding a delay between each
sysfs_emit_at calls in the iio_format_list() to force the concurrent
access to the shared available list buffer.

This patch set extends the iio APIs and fixes some affected drivers.

Summary:
- Patch 1: iio core: introduce a iio info release callback to let
  drivers share a copy of their available info list and later free it.

- Patch 2:
    - inkern: make consumers copy and release the available info lists
      of their producers, necessary after patch 1.
    - iio-mux, iio-rescale, dpot-dac, ingenic-battery: adapt consumers
      to inkern API change by freeing the now copied available lists of
      their producers.

- Patch 3: pac1921: handle the current scale available info via the
  read_avail+read_avail_release_resource APIs instead of using an ad-hoc
  ext_info attribute. The latter was used to avoid the risk of a race in
  the available list.

- Patch 4,5: ad7192, as73211: fix the possible race in the drivers by
  copying/releasing the affected available lists.

Tested:
- pac1921: could not reproduce the race condition with the new APIs,
  even with additional delays among the sysfs_emit_at calls during a
  shunt resistor write. No new issue found after the change.

- iio-mux, iio-rescale, dpot-dac: tested with pac1921 as producer, which
  was adapted to produce a mock raw available info list.
  The tests did not cover the driver features but focused on assessing
  the function call sequence. For example the following traced function
  graph shows a read of the dpot mocked out voltage (with ftrace
  filters: pac1921* iio* dpot* kmemdup_array* kfree*):

 3)               |  iio_read_channel_info_avail [industrialio]() {
 3)               |    dpot_dac_read_avail [dpot_dac]() {
 3)               |      iio_read_avail_channel_raw [industrialio]() {
 3)               |        iio_channel_read_avail [industrialio]() {
 3)               |          pac1921_read_avail [pac1921]() {
 3)   5.208 us    |            kmemdup_array();
 3) + 11.459 us   |          }
 3)   3.167 us    |          kmemdup_array();
 3)               |          pac1921_read_avail_release_res [pac1921]() {
 3)   1.709 us    |            kfree();
 3)   4.458 us    |          }
 3) + 25.750 us   |        }
 3) + 31.792 us   |      }
 3) + 35.000 us   |    }
 3) + 37.083 us   |    iio_format_list [industrialio]();
 3)               |    dpot_dac_read_avail_release_res [dpot_dac]() {
 3)   1.583 us    |      kfree();
 3)   4.250 us    |    }
 3) + 84.292 us   |  }

- ingenic-battery: also tested with mock available info produced by the
  pac1921 driver. Following the traced graph part that should correspond
  to the ingenic_battery_set_scale() flow (which is not traceable with
  the additional ingenic* ftrace filter for some reason):

 2)               |  ingenic_battery_probe [ingenic_battery]() {
                ...
 2)               |    iio_read_max_channel_raw [industrialio]() {
 2)               |      iio_channel_read_avail [industrialio]() {
 2)               |        pac1921_read_avail [pac1921]() {
 2)   4.333 us    |          kmemdup_array();
 2) + 10.834 us   |        }
 2)   3.500 us    |        kmemdup_array();
 2)               |        pac1921_read_avail_release_res [pac1921]() {
 2)   1.791 us    |          kfree();
 2)   4.625 us    |        }
 2) + 26.291 us   |      }
 2)   1.583 us    |      kfree();
 2) + 35.750 us   |    }
 2)               |    iio_read_avail_channel_attr_retvals [industrialio]() {
 2)               |      iio_channel_read_avail [industrialio]() {
 2)               |        pac1921_read_avail [pac1921]() {
 2)   3.250 us    |          kmemdup_array();
 2)   8.209 us    |        }
 2)   3.458 us    |        kmemdup_array();
 2)               |        pac1921_read_avail_release_res [pac1921]() {
 2)   1.542 us    |          kfree();
 2)   4.292 us    |        }
 2) + 21.417 us   |      }
 2) + 26.333 us   |    }
 2)               |    iio_write_channel_attribute [industrialio]() {
 2)   4.375 us    |      pac1921_write_raw [pac1921]();
 2)   9.625 us    |    }
 2)   1.666 us    |    kfree();
 2) * 47810.08 us |  }

Not tested:
- ad7192, as73211

Link: https://lore.kernel.org/linux-iio/20240724-iio-pac1921-v4-0-723698e903a3@gmail.com/

Signed-off-by: Matteo Martelli <matteomartelli3@gmail.com>
---
Changes in v5:
- Patch 2: inkern, ingenic-battery: add read_avail_retvals() helpers to
  safely use the cleanup free pattern and update commit message accordingly.
- Update ingenic-battery test trace log in cover letter after retest:
  iio_read_avail_channel_attribute() -> iio_read_avail_channel_attr_retvals().
- Link to v4: https://lore.kernel.org/r/20241018-iio-read-avail-release-v4-0-53c8ac618585@gmail.com

Changes in v4:
- Patch 2: inkern, ingenic-battery: use cleanup free instead of the
  "goto out" pattern
- Link to v3: https://lore.kernel.org/r/20241015-iio-read-avail-release-v3-0-ac3e08f25cb3@gmail.com

Changes in v3:
- Rebased on top of iio-togreg
- Squash and reorder commits to allow bisection without memleaks
- Edit summary in cover letter to match new patch order
- Patch 2: inkern: add comment to clarify the need of the producer's buffer copy
- Patch 5: as73211: update comment on mutex declaration
- Link to v2: https://lore.kernel.org/r/20241007-iio-read-avail-release-v2-0-245002d5869e@gmail.com

Changes in v2:
- Patch 4: as73211: remove one blank line
- Patch 6: consumers: fix typo in commit message
- Patch 7: ingenic-battery: add missing header include
- Link to v1: https://lore.kernel.org/r/20241003-iio-read-avail-release-v1-0-c70cc7d9c2e0@gmail.com

---
Matteo Martelli (5):
      iio: core: add read_avail_release_resource callback to fix race
      iio: consumers: copy/release available info from producer to fix race
      iio: pac1921: use read_avail+release APIs instead of custom ext_info
      iio: ad7192: copy/release available filter frequencies to fix race
      iio: as73211: copy/release available integration times to fix race

 drivers/iio/adc/ad7192.c               |  22 +++++-
 drivers/iio/adc/pac1921.c              | 128 ++++++++++++---------------------
 drivers/iio/afe/iio-rescale.c          |   8 +++
 drivers/iio/dac/dpot-dac.c             |   8 +++
 drivers/iio/industrialio-core.c        |  14 +++-
 drivers/iio/inkern.c                   |  99 ++++++++++++++++++++-----
 drivers/iio/light/as73211.c            |  25 +++++--
 drivers/iio/multiplexer/iio-mux.c      |   8 +++
 drivers/power/supply/ingenic-battery.c |  22 +++---
 include/linux/iio/consumer.h           |  28 +++++++-
 include/linux/iio/iio.h                |   4 ++
 11 files changed, 248 insertions(+), 118 deletions(-)
---
base-commit: c3e9df514041ec6c46be83801b1891392f4522f7
change-id: 20240802-iio-read-avail-release-cb3d2a1e1b98

Best regards,
-- 
Matteo Martelli <matteomartelli3@gmail.com>


^ permalink raw reply	[flat|nested] 32+ messages in thread
* Re: [PATCH v5 2/5] iio: consumers: copy/release available info from producer to fix race
@ 2024-10-24 22:59 kernel test robot
  0 siblings, 0 replies; 32+ messages in thread
From: kernel test robot @ 2024-10-24 22:59 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20241021-iio-read-avail-release-v5-2-b168713fab33@gmail.com>
References: <20241021-iio-read-avail-release-v5-2-b168713fab33@gmail.com>
TO: Matteo Martelli <matteomartelli3@gmail.com>
TO: Jonathan Cameron <jic23@kernel.org>
TO: "Lars-Peter Clausen" <lars@metafoo.de>
TO: Michael Hennerich <Michael.Hennerich@analog.com>
TO: "Alisa-Dariana Roman" <alisa.roman@analog.com>
TO: Christian Eggers <ceggers@arri.de>
TO: Peter Rosin <peda@axentia.se>
TO: Paul Cercueil <paul@crapouillou.net>
TO: Sebastian Reichel <sre@kernel.org>
CC: linux-iio@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: linux-mips@vger.kernel.org
CC: linux-pm@vger.kernel.org
CC: Matteo Martelli <matteomartelli3@gmail.com>

Hi Matteo,

kernel test robot noticed the following build warnings:

[auto build test WARNING on c3e9df514041ec6c46be83801b1891392f4522f7]

url:    https://github.com/intel-lab-lkp/linux/commits/Matteo-Martelli/iio-core-add-read_avail_release_resource-callback-to-fix-race/20241021-205851
base:   c3e9df514041ec6c46be83801b1891392f4522f7
patch link:    https://lore.kernel.org/r/20241021-iio-read-avail-release-v5-2-b168713fab33%40gmail.com
patch subject: [PATCH v5 2/5] iio: consumers: copy/release available info from producer to fix race
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: i386-randconfig-141-20241025 (https://download.01.org/0day-ci/archive/20241025/202410250631.Sci650fF-lkp@intel.com/config)
compiler: clang version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410250631.Sci650fF-lkp@intel.com/

smatch warnings:
drivers/iio/inkern.c:878 iio_channel_read_max() error: uninitialized symbol 'avail_type'.
drivers/iio/inkern.c:935 iio_channel_read_min() error: uninitialized symbol 'avail_type'.

vim +/avail_type +878 drivers/iio/inkern.c

00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  864  
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  865  static int iio_channel_read_max(struct iio_channel *chan,
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  866  				int *val, int *val2, int *type,
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  867  				enum iio_chan_info_enum info)
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  868  {
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  869  	int length;
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  870  	int avail_type;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  871  
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  872  	const int *vals __free(kfree) =
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  873  		iio_channel_read_avail_retvals(chan, type, &length,
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  874  					       &avail_type, info);
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  875  	if (IS_ERR(vals))
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  876  		return PTR_ERR(vals);
f75c544d741332 drivers/iio/inkern.c         Herve Codina     2023-06-23  877  
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21 @878  	switch (avail_type) {
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  879  	case IIO_AVAIL_RANGE:
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  880  		switch (*type) {
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  881  		case IIO_VAL_INT:
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  882  			*val = vals[2];
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  883  			break;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  884  		default:
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  885  			*val = vals[4];
ad4e8480a1db87 drivers/iio/inkern.c         Herve Codina     2023-06-23  886  			if (val2)
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  887  				*val2 = vals[5];
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  888  		}
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  889  		return 0;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  890  
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  891  	case IIO_AVAIL_LIST:
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  892  		if (length <= 0)
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  893  			return -EINVAL;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  894  		switch (*type) {
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  895  		case IIO_VAL_INT:
97aee7157eeada drivers/iio/inkern.c         Herve Codina     2023-06-23  896  			*val = max_array(vals, length);
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  897  			break;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  898  		default:
4dc603735826ec drivers/iio/inkern.c         Herve Codina     2023-06-23  899  			/* TODO: learn about max for other iio values */
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  900  			return -EINVAL;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  901  		}
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  902  		return 0;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  903  
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  904  	default:
f75c544d741332 drivers/iio/inkern.c         Herve Codina     2023-06-23  905  		return -EINVAL;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  906  	}
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  907  }
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  908  
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  909  int iio_read_max_channel_raw(struct iio_channel *chan, int *val)
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  910  {
b804e2b76ac6d5 drivers/iio/inkern.c         Jonathan Cameron 2021-04-26  911  	struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(chan->indio_dev);
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  912  	int type;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  913  
3092bde731ca8c drivers/iio/inkern.c         Nuno Sa          2024-02-29  914  	guard(mutex)(&iio_dev_opaque->info_exist_lock);
3092bde731ca8c drivers/iio/inkern.c         Nuno Sa          2024-02-29  915  	if (!chan->indio_dev->info)
3092bde731ca8c drivers/iio/inkern.c         Nuno Sa          2024-02-29  916  		return -ENODEV;
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  917  
3092bde731ca8c drivers/iio/inkern.c         Nuno Sa          2024-02-29  918  	return iio_channel_read_max(chan, val, NULL, &type, IIO_CHAN_INFO_RAW);
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  919  }
00c5f80c2fad53 drivers/iio/inkern.c         Peter Rosin      2016-11-08  920  EXPORT_SYMBOL_GPL(iio_read_max_channel_raw);
e27d75d71c0dbb drivers/staging/iio/inkern.c Jonathan Cameron 2012-02-15  921  
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  922  static int iio_channel_read_min(struct iio_channel *chan,
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  923  				int *val, int *val2, int *type,
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  924  				enum iio_chan_info_enum info)
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  925  {
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  926  	int length;
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  927  	int avail_type;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  928  
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  929  	const int *vals __free(kfree) =
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  930  		iio_channel_read_avail_retvals(chan, type, &length,
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  931  					       &avail_type, info);
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  932  	if (IS_ERR(vals))
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21  933  		return PTR_ERR(vals);
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  934  
b87e6c24d989cc drivers/iio/inkern.c         Matteo Martelli  2024-10-21 @935  	switch (avail_type) {
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  936  	case IIO_AVAIL_RANGE:
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  937  		switch (*type) {
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  938  		case IIO_VAL_INT:
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  939  			*val = vals[0];
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  940  			break;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  941  		default:
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  942  			*val = vals[0];
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  943  			if (val2)
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  944  				*val2 = vals[1];
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  945  		}
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  946  		return 0;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  947  
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  948  	case IIO_AVAIL_LIST:
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  949  		if (length <= 0)
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  950  			return -EINVAL;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  951  		switch (*type) {
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  952  		case IIO_VAL_INT:
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  953  			*val = min_array(vals, length);
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  954  			break;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  955  		default:
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  956  			/* TODO: learn about min for other iio values */
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  957  			return -EINVAL;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  958  		}
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  959  		return 0;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  960  
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  961  	default:
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  962  		return -EINVAL;
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  963  	}
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  964  }
7560418078b939 drivers/iio/inkern.c         Herve Codina     2023-06-23  965  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2025-01-05 11:22 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-21 12:54 [PATCH v5 0/5] iio: fix possible race condition during access of available info lists Matteo Martelli
2024-10-21 12:54 ` [PATCH v5 1/5] iio: core: add read_avail_release_resource callback to fix race Matteo Martelli
2024-10-21 12:54 ` [PATCH v5 2/5] iio: consumers: copy/release available info from producer " Matteo Martelli
2024-10-30 14:47   ` Andy Shevchenko
2024-10-30 17:35     ` Jonathan Cameron
2024-10-30 18:23     ` Matteo Martelli
2024-10-30 20:30       ` Jonathan Cameron
2024-10-31 11:26         ` Matteo Martelli
2024-10-31 14:31           ` Jonathan Cameron
2024-10-31 18:06             ` Matteo Martelli
2024-11-15 14:25               ` Matteo Martelli
2024-11-18 10:21                 ` Andy Shevchenko
2024-11-18 14:45                   ` Matteo Martelli
2024-11-18 16:05                     ` Andy Shevchenko
2024-11-19 11:25                       ` Matteo Martelli
2024-11-19 12:05                         ` Andy Shevchenko
2024-11-23 14:13                           ` Jonathan Cameron
2024-11-25 10:05                             ` Andy Shevchenko
2024-11-26 16:31                             ` Matteo Martelli
2024-11-26 17:41                               ` Jonathan Cameron
2024-11-29 16:04                                 ` Matteo Martelli
2024-12-02 17:42                                   ` Andy Shevchenko
2024-12-12  9:46                                     ` Matteo Martelli
2024-12-12 14:06                                       ` Andy Shevchenko
2024-12-15 13:46                                         ` Jonathan Cameron
2024-12-23 15:28                                           ` Matteo Martelli
2025-01-05 11:22                                             ` Jonathan Cameron
2024-10-21 12:54 ` [PATCH v5 3/5] iio: pac1921: use read_avail+release APIs instead of custom ext_info Matteo Martelli
2024-10-21 12:54 ` [PATCH v5 4/5] iio: ad7192: copy/release available filter frequencies to fix race Matteo Martelli
2024-10-21 12:54 ` [PATCH v5 5/5] iio: as73211: copy/release available integration times " Matteo Martelli
2024-10-27  9:43 ` [PATCH v5 0/5] iio: fix possible race condition during access of available info lists Jonathan Cameron
  -- strict thread matches above, loose matches on Subject: below --
2024-10-24 22:59 [PATCH v5 2/5] iio: consumers: copy/release available info from producer to fix race kernel test robot

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.