Commit e5b5a61f authored by Ricardo Ribalda Delgado's avatar Ricardo Ribalda Delgado Committed by Jacek Anaszewski

leds/led-class: Add missing put_device()

Devices found by class_find_device must be freed with put_device().
Otherwise the reference count will not work properly.

Fixes: a96aa64c ("leds/led-class: Handle LEDs with the same name")
Reported-by: default avatarAlan Tull <delicious.quinoa@gmail.com>
Signed-off-by: default avatarRicardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: default avatarJacek Anaszewski <j.anaszewski@samsung.com>
parent 4fc5af86
...@@ -228,12 +228,15 @@ static int led_classdev_next_name(const char *init_name, char *name, ...@@ -228,12 +228,15 @@ static int led_classdev_next_name(const char *init_name, char *name,
{ {
unsigned int i = 0; unsigned int i = 0;
int ret = 0; int ret = 0;
struct device *dev;
strlcpy(name, init_name, len); strlcpy(name, init_name, len);
while (class_find_device(leds_class, NULL, name, match_name) && while ((ret < len) &&
(ret < len)) (dev = class_find_device(leds_class, NULL, name, match_name))) {
put_device(dev);
ret = snprintf(name, len, "%s_%u", init_name, ++i); ret = snprintf(name, len, "%s_%u", init_name, ++i);
}
if (ret >= len) if (ret >= len)
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment