* [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration
@ 2026-10-11 6:15 赵文强
2026-10-11 6:16 ` [PATCH 2/2] iio: accel: adxl345: propagate errors when disabling activity events 赵文强
2026-10-11 16:59 ` [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration Joshua Crofts
0 siblings, 2 replies; 3+ messages in thread
From: 赵文强 @ 2026-10-11 6:15 UTC (permalink / raw)
To: Nuno Sá, Michael Hennerich, Jonathan Cameron
Cc: David Lechner, Andy Shevchenko, Lothar Rubusch, linux, linux-iio,
linux-kernel
adxl345_is_act_inact_en() returns either a boolean state or a negative
regmap error. Applying !! in adxl345_read_mag_config() converts every
negative error to 1, so a failed register read is reported to userspace
as an enabled activity or inactivity event.
Return the helper result directly. Its successful paths already return
0 or 1, and the IIO event attribute read path propagates negative errors.
This also covers the adaptive magnitude events using the same helper.
Fixes: 66a1af6d8a63 ("iio: accel: adxl345: add activity event feature")
Assisted-by: LLM
Signed-off-by: 赵文强 <berringtoni36@gmail.com>
---
Validation on macOS ARM64 with Apple clang 17:
- Compiled the three relevant driver functions verbatim with the driver
header, using a host regmap stub for deterministic read failures.
- The original code failed 36 error cases; the patch passed all 53 cases.
- Covered activity/inactivity and DC/AC coupling, each of three regmap
reads failing with -EIO, -ETIMEDOUT and -EREMOTEIO, enabled/disabled
states, mismatched coupling and an unsupported direction.
- Checked read order, early exit and unchanged register state.
- Used -Wall -Wextra -Werror, AddressSanitizer and UndefinedBehaviorSanitizer.
- git diff --check and checkpatch.pl --no-tree --no-signoff --strict
on the code diff passed with no errors, warnings or checks.
- The full patch draft also passed checkpatch with no errors, warnings
or checks after fetching the introducing commit for Fixes validation.
Also compiled adxl345_core.o, adxl345_spi.o and adxl345_i2c.o as
x86_64 ELF relocatable objects using clang and unpacked Debian Linux 6.1
headers supplemented by upstream IIO/regmap headers. This checks syntax
and types; it is not a full Kbuild/modpost build.
No in-kernel KUnit execution or hardware sensor test was performed.
The checkout is sparse; --no-tree disables checkpatch's tree layout
check. Initial draft checks used --no-signoff before human review.
The final signed email also passed checkpatch without --no-signoff.
AI assistance: Codex reviewed the event-read path, identified the errno
conversion, drafted this two-line fix, the reproducer and changelog.
The request was to prepare a driver/BSP/kernel contribution related to an
ADXL345 SPI/IIO vibration-monitoring project, with reproduction and checks.
drivers/iio/accel/adxl345_core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/adxl345_core.c b/drivers/iio/accel/adxl345_core.c
index 6c9080d..5983fc7 100644
--- a/drivers/iio/accel/adxl345_core.c
+++ b/drivers/iio/accel/adxl345_core.c
@@ -1176,9 +1176,9 @@ static int adxl345_read_mag_config(struct
adxl345_state *st,
{
switch (dir) {
case IIO_EV_DIR_RISING:
- return !!adxl345_is_act_inact_en(st, type_act);
+ return adxl345_is_act_inact_en(st, type_act);
case IIO_EV_DIR_FALLING:
- return !!adxl345_is_act_inact_en(st, type_inact);
+ return adxl345_is_act_inact_en(st, type_inact);
default:
return -EINVAL;
}
base-commit: 9ee8306121495d2a25aa5d1bfd519f2748786b83
--
2.50.1 (Apple Git-155)
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 2/2] iio: accel: adxl345: propagate errors when disabling activity events
2026-10-11 6:15 [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration 赵文强
@ 2026-10-11 6:16 ` 赵文强
2026-10-11 16:59 ` [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration Joshua Crofts
1 sibling, 0 replies; 3+ messages in thread
From: 赵文强 @ 2026-10-11 6:16 UTC (permalink / raw)
To: Nuno Sá, Michael Hennerich, Jonathan Cameron
Cc: David Lechner, Andy Shevchenko, Lothar Rubusch, linux, linux-iio,
linux-kernel
When disabling an activity or inactivity event in
adxl345_set_act_inact_en(), adxl345_is_act_inact_ac() is called to
verify that the currently configured AC/DC coupling matches the event
being disabled.
adxl345_is_act_inact_ac() returns 1 on a coupling match, 0 on a
coupling mismatch, or a negative errno if regmap_read() fails. Checking
<= 0 and unconditionally returning 0 swallows negative regmap errors
and reports a successful write to userspace while leaving the event
enabled in registers.
Store the helper return value in ret and return ret when ret <= 0 so
mismatched coupling still returns 0 while negative regmap errors are
propagated.
Fixes: 31f7679bb69a ("iio: accel: adxl345: add coupling detection for
activity/inactivity")
Assisted-by: LLM
Signed-off-by: 赵文强 <berringtoni36@gmail.com>
---
Validation on macOS ARM64 with Apple clang 17:
- Compiled the seven event-write/disable driver functions verbatim with
the driver header, using a host regmap stub for deterministic read
failures and register state checks.
- The original code failed all 12 disable regmap-error cases (returning 0
instead of -EIO, -ETIMEDOUT and -EREMOTEIO); the patch passed all 29
cases across DC/AC activity and inactivity disable error propagation,
coupling-mismatch ignore, normal disable, normal enable, enable read
failure and unsupported direction.
- Verified that failed disable reads exit after the first regmap_read()
without issuing register writes or altering enabled register bits.
- Used -Wall -Wextra -Werror, AddressSanitizer and UndefinedBehaviorSanitizer.
- Also compiled adxl345_core.o, adxl345_spi.o and adxl345_i2c.o as 64-bit
x86_64 ELF relocatable objects with clang --target=x86_64-unknown-linux-gnu
against unpacked Debian Linux 6.1 headers plus upstream IIO/regmap headers.
- git diff --check and checkpatch.pl --no-tree --no-signoff --strict
passed with 0 errors, 0 warnings and 0 checks.
This is a host function-chain regression and cross-target object compile,
not an in-kernel Kbuild/KUnit execution or hardware sensor test.
AI assistance: Antigravity identified the error-swallowing check in
adxl345_set_act_inact_en(), drafted this fix, the fault-injection test
and changelog.
The request was to prepare a driver/BSP/kernel contribution related to
an ADXL345 SPI/IIO vibration-monitoring project with reproduction and checks.
drivers/iio/accel/adxl345_core.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/adxl345_core.c b/drivers/iio/accel/adxl345_core.c
index 5983fc7..8ec1bbc 100644
--- a/drivers/iio/accel/adxl345_core.c
+++ b/drivers/iio/accel/adxl345_core.c
@@ -692,8 +692,9 @@ static int adxl345_set_act_inact_en(struct
adxl345_state *st,
* current call attempts to turn off a DC-coupled activity, this
* inconsistency should be detected here.
*/
- if (adxl345_is_act_inact_ac(st, type) <= 0)
- return 0;
+ ret = adxl345_is_act_inact_ac(st, type);
+ if (ret <= 0)
+ return ret;
}
/* Start modifying configuration registers */
--
2.50.1 (Apple Git-155)
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration
2026-10-11 6:15 [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration 赵文强
2026-10-11 6:16 ` [PATCH 2/2] iio: accel: adxl345: propagate errors when disabling activity events 赵文强
@ 2026-10-11 16:59 ` Joshua Crofts
1 sibling, 0 replies; 3+ messages in thread
From: Joshua Crofts @ 2026-10-11 16:59 UTC (permalink / raw)
To: 赵文强
Cc: Nuno Sá,
Michael Hennerich, Jonathan Cameron, David Lechner,
Andy Shevchenko, Lothar Rubusch, linux, linux-iio, linux-kernel
On Sun, 11 Oct 2026 02:15:41 -0400
赵文强 <berringtoni36@gmail.com> wrote:
> diff --git a/drivers/iio/accel/adxl345_core.c b/drivers/iio/accel/adxl345_core.c
> index 6c9080d..5983fc7 100644
> --- a/drivers/iio/accel/adxl345_core.c
> +++ b/drivers/iio/accel/adxl345_core.c
> @@ -1176,9 +1176,9 @@ static int adxl345_read_mag_config(struct
This patch is corrupted - I assume the email client you're using added
a hard break here, therefore it fails to apply :(
Additionally, you didn't use a cover letter, so patch 2 appears as a
reply to patch 1, which may break tooling.
Please use git send-email to send patches to prevent these issues.
> adxl345_state *st,
> {
> switch (dir) {
> case IIO_EV_DIR_RISING:
> - return !!adxl345_is_act_inact_en(st, type_act);
> + return adxl345_is_act_inact_en(st, type_act);
> case IIO_EV_DIR_FALLING:
> - return !!adxl345_is_act_inact_en(st, type_inact);
> + return adxl345_is_act_inact_en(st, type_inact);
> default:
> return -EINVAL;
> }
>
> base-commit: 9ee8306121495d2a25aa5d1bfd519f2748786b83
--
Kind regards,
Joshua Crofts
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-11 16:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-11 6:15 [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration 赵文强
2026-10-11 6:16 ` [PATCH 2/2] iio: accel: adxl345: propagate errors when disabling activity events 赵文强
2026-10-11 16:59 ` [PATCH 1/2] iio: accel: adxl345: propagate errors when reading event configuration Joshua Crofts
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®