Message ID | 20231103195310.948327-2-andriy.shevchenko@linux.intel.com |
---|---|
State | New |
Headers | show |
Series | [v1,1/4] leds: trigger: gpio: Replace custom code for gpiod_get_optional() | expand |
On Fri, Nov 3, 2023 at 9:03 PM Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > sscanf() is a heavy one and moreover requires additional boundary checks. > Convert driver to use kstrtou8() in gpio_trig_inverted_store(). > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
On Fri, 03 Nov 2023, Andy Shevchenko wrote: > sscanf() is a heavy one and moreover requires additional boundary checks. > Convert driver to use kstrtou8() in gpio_trig_inverted_store(). > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/leds/trigger/ledtrig-gpio.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/leds/trigger/ledtrig-gpio.c b/drivers/leds/trigger/ledtrig-gpio.c > index d91ae7fde3cf..8a30f9228186 100644 > --- a/drivers/leds/trigger/ledtrig-gpio.c > +++ b/drivers/leds/trigger/ledtrig-gpio.c > @@ -53,14 +53,12 @@ static ssize_t gpio_trig_brightness_store(struct device *dev, > struct device_attribute *attr, const char *buf, size_t n) > { > struct gpio_trig_data *gpio_data = led_trigger_get_drvdata(dev); > - unsigned desired_brightness; > + u8 desired_brightness; > int ret; > > - ret = sscanf(buf, "%u", &desired_brightness); > - if (ret < 1 || desired_brightness > 255) { > - dev_err(dev, "invalid value\n"); > - return -EINVAL; > - } > + ret = kstrtou8(buf, 10, &desired_brightness); Where does 10 come from? > + if (ret) > + return ret; > > gpio_data->desired_brightness = desired_brightness; > > -- > 2.40.0.1.gaa8946217a0b >
On Thu, Nov 23, 2023 at 11:05:38AM +0000, Lee Jones wrote: > On Fri, 03 Nov 2023, Andy Shevchenko wrote: ... > > - ret = sscanf(buf, "%u", &desired_brightness); "%u" (see man sscanf() for the details) ... > > + ret = kstrtou8(buf, 10, &desired_brightness); > > Where does 10 come from? See above.
diff --git a/drivers/leds/trigger/ledtrig-gpio.c b/drivers/leds/trigger/ledtrig-gpio.c index d91ae7fde3cf..8a30f9228186 100644 --- a/drivers/leds/trigger/ledtrig-gpio.c +++ b/drivers/leds/trigger/ledtrig-gpio.c @@ -53,14 +53,12 @@ static ssize_t gpio_trig_brightness_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t n) { struct gpio_trig_data *gpio_data = led_trigger_get_drvdata(dev); - unsigned desired_brightness; + u8 desired_brightness; int ret; - ret = sscanf(buf, "%u", &desired_brightness); - if (ret < 1 || desired_brightness > 255) { - dev_err(dev, "invalid value\n"); - return -EINVAL; - } + ret = kstrtou8(buf, 10, &desired_brightness); + if (ret) + return ret; gpio_data->desired_brightness = desired_brightness;
sscanf() is a heavy one and moreover requires additional boundary checks. Convert driver to use kstrtou8() in gpio_trig_inverted_store(). Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/leds/trigger/ledtrig-gpio.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)