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

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
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -228,12 +228,15 @@ static int led_classdev_next_name(const char *init_name, char *name,
{
	unsigned int i = 0;
	int ret = 0;
	struct device *dev;

	strlcpy(name, init_name, len);

	while (class_find_device(leds_class, NULL, name, match_name) &&
	       (ret < len))
	while ((ret < len) &&
	       (dev = class_find_device(leds_class, NULL, name, match_name))) {
		put_device(dev);
		ret = snprintf(name, len, "%s_%u", init_name, ++i);
	}

	if (ret >= len)
		return -ENOMEM;