[PATCH 0/4] iio: magnetometer: rm3100: Modernize locking and control flow

Maxwell Doose
2026-04-28T12:46:48Z

The goal of this patch series is to replace the manual mutex_lock() and
mutex_unlock() calls in rm3100-core.c with their more modern
counterparts, guard(mutex)() and scoped_guard(). I've also done some
minor cleanups, removing what are now redundant gotos, and enabling
direct returns.

Following feedback on recent commits, I've learned that it's a better
idea to split changes to be more atomic, and I've done that here in
case any particular change *somehow* causes a build regression. The
changes have been test-compiled however, and according to make, smatch,
and sparse, should be sound.

=== Changelog ===
v2:
- Added small style fixes per Andy's suggestions (Adding blank lines,
moving an if statement in a scoped_guard block).
- Switched out scoped_guard() for guard(mutex)() in certain commits.
- Fixed error in commit 4 where deadlocks could occur, as goto ignores
__attribute__((cleanup)). This has been fixed by the above.

Maxwell Doose (4):
iio: magnetometer: rm3100: Use guard(mutex)() in rm3100_read_mag()
iio: magnetometer: rm3100: Use scoped_guard() in
rm3100_get_samp_freq()
iio: magnetometer: rm3100: Use guard(mutex)() in
rm3100_set_samp_freq()
iio: magnetometer: rm3100: Use guard(mutex)() in
rm3100_trigger_handler()

drivers/iio/magnetometer/rm3100-core.c | 63 ++++++++++----------------
1 file changed, 24 insertions(+), 39 deletions(-)

--
2.53.0