Dne 02. 04. 21 v 13:42 Dan Carpenter napsal(a): > This unwind loop needs to free snd_ctl_leds[0] as well. > > Fixes: cb17fe0045aa ("ALSA: control - add sysfs support to the LED trigger module") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > --- > sound/core/control_led.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/sound/core/control_led.c b/sound/core/control_led.c > index d4fb8b873f34..202b475d0bf3 100644 > --- a/sound/core/control_led.c > +++ b/sound/core/control_led.c > @@ -712,7 +712,7 @@ static struct snd_ctl_layer_ops snd_ctl_led_lops = { > static int __init snd_ctl_led_init(void) > { > struct snd_ctl_led *led; > - unsigned int group; > + int group; > > device_initialize(&snd_ctl_led_dev); > snd_ctl_led_dev.class = sound_class; > @@ -730,7 +730,7 @@ static int __init snd_ctl_led_init(void) > dev_set_name(&led->dev, led->name); > if (device_add(&led->dev)) { > put_device(&led->dev); > - for (; group > 0; group--) { > + for (; group >= 0; group--) { > led = &snd_ctl_leds[group]; It's not correct. This assignent should be 'led = &snd_ctl_leds[group - 1];' without other changes, because the put_device() is enough when device_add() fails. Could you resend the correction? Jaroslav > device_del(&led->dev); > } > -- Jaroslav Kysela <perex@xxxxxxxx> Linux Sound Maintainer; ALSA Project; Red Hat, Inc.