[PATCH v7 3/3] leds: trigger: netdev: Report invalid interval to user space

From: A. Sverdlin

Date: Fri Nov 13 2026 - 15:28:14 EST


From: Alexander Sverdlin <alexander.sverdlin@xxxxxxxxxxx>

interval_store() silently accepts out-of-range values: a write outside
the [5, 10000] ms bounds returns the full count as if it succeeded, yet
the interval is left unchanged.

Reject out-of-range values with -EINVAL instead.

Cc: stable@xxxxxxxxxxxxxxx
Fixes: 06f502f57d0d ("leds: trigger: Introduce a NETDEV trigger")
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@xxxxxxxxxxx>
---
Changelog:
v7:
- rebased onto for-leds-next as of 687615faae92
v6:
- patch introduced

drivers/leds/trigger/ledtrig-netdev.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c
index 601c4d9e0198a..870b374fd9c48 100644
--- a/drivers/leds/trigger/ledtrig-netdev.c
+++ b/drivers/leds/trigger/ledtrig-netdev.c
@@ -509,6 +509,10 @@ static ssize_t interval_store(struct device *dev,
if (ret)
return ret;

+ /* impose some basic bounds on the timer interval */
+ if (value < 5 || value > 10000)
+ return -EINVAL;
+
mutex_lock(&trigger_data->lock);

if (trigger_data->hw_control) {
@@ -516,13 +520,10 @@ static ssize_t interval_store(struct device *dev,
return -EINVAL;
}

- /* impose some basic bounds on the timer interval */
- if (value >= 5 && value <= 10000) {
- cancel_delayed_work_sync(&trigger_data->work);
+ cancel_delayed_work_sync(&trigger_data->work);

- atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
- set_baseline_state(trigger_data); /* resets timer */
- }
+ atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
+ set_baseline_state(trigger_data); /* resets timer */

mutex_unlock(&trigger_data->lock);

--
2.56.0