Message ID | 20230427001541.18704-8-ansuelsmth@gmail.com |
---|---|
State | New |
Headers | show |
Series | leds: introduce new LED hw control APIs | expand |
Hi Christian, On Thu, Apr 27, 2023 at 02:15:37AM +0200, Christian Marangi wrote: > Reject interval and device store with hw_control enabled. They are > currently not supported and MUST be empty with hw_control enabled. > > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> > --- > drivers/leds/trigger/ledtrig-netdev.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c > index 28c4465a2584..8cd876647a27 100644 > --- a/drivers/leds/trigger/ledtrig-netdev.c > +++ b/drivers/leds/trigger/ledtrig-netdev.c > @@ -248,6 +255,13 @@ static ssize_t interval_store(struct device *dev, > unsigned long value; > int ret; > > + mutex_lock(&trigger_data->lock); > + > + if (trigger_data->hw_control) { > + size = -EINVAL; > + goto out; > + } > + > ret = kstrtoul(buf, 0, &value); > if (ret) > return ret; You return with the mutex held here. You could do the kstrtoul() before acquiring the mutex. Sascha
diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c index 28c4465a2584..8cd876647a27 100644 --- a/drivers/leds/trigger/ledtrig-netdev.c +++ b/drivers/leds/trigger/ledtrig-netdev.c @@ -124,6 +124,11 @@ static ssize_t device_name_store(struct device *dev, mutex_lock(&trigger_data->lock); + if (trigger_data->hw_control) { + size = -EINVAL; + goto out; + } + if (trigger_data->net_dev) { dev_put(trigger_data->net_dev); trigger_data->net_dev = NULL; @@ -145,6 +150,8 @@ static ssize_t device_name_store(struct device *dev, trigger_data->last_activity = 0; set_baseline_state(trigger_data); + +out: mutex_unlock(&trigger_data->lock); return size; @@ -248,6 +255,13 @@ static ssize_t interval_store(struct device *dev, unsigned long value; int ret; + mutex_lock(&trigger_data->lock); + + if (trigger_data->hw_control) { + size = -EINVAL; + goto out; + } + ret = kstrtoul(buf, 0, &value); if (ret) return ret; @@ -260,6 +274,9 @@ static ssize_t interval_store(struct device *dev, set_baseline_state(trigger_data); /* resets timer */ } +out: + mutex_unlock(&trigger_data->lock); + return size; }
Reject interval and device store with hw_control enabled. They are currently not supported and MUST be empty with hw_control enabled. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> --- drivers/leds/trigger/ledtrig-netdev.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)