ALSA: control: Use list_for_each_entry_safe()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 24 Apr 2024 14:49:41 +0000 (17:49 +0300)
committerTakashi Iwai <tiwai@suse.de>
Wed, 24 Apr 2024 15:08:48 +0000 (17:08 +0200)
Instead of reiterating the list, use list_for_each_entry_safe()
that allows to continue without starting over.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Message-ID: <20240424145020.1057216-1-andriy.shevchenko@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/control_led.c

index 3d37e9fa7b9c207d9b24fa3bcd4507550d727316..ac19d14bd574568e752fe438d2bde5d9b0ee145c 100644 (file)
@@ -285,25 +285,22 @@ static void snd_ctl_led_ctl_destroy(struct snd_ctl_led_ctl *lctl)
 static void snd_ctl_led_clean(struct snd_card *card)
 {
        unsigned int group;
+       struct snd_ctl_led_ctl *lctl, *_lctl;
        struct snd_ctl_led *led;
-       struct snd_ctl_led_ctl *lctl;
 
        for (group = 0; group < MAX_LED; group++) {
                led = &snd_ctl_leds[group];
-repeat:
-               list_for_each_entry(lctl, &led->controls, list)
-                       if (!card || lctl->card == card) {
+               list_for_each_entry_safe(lctl, _lctl, &led->controls, list)
+                       if (!card || lctl->card == card)
                                snd_ctl_led_ctl_destroy(lctl);
-                               goto repeat;
-                       }
        }
 }
 
 static int snd_ctl_led_reset(int card_number, unsigned int group)
 {
        struct snd_card *card __free(snd_card_unref) = NULL;
+       struct snd_ctl_led_ctl *lctl, *_lctl;
        struct snd_ctl_led *led;
-       struct snd_ctl_led_ctl *lctl;
        struct snd_kcontrol_volatile *vd;
        bool change = false;
 
@@ -315,14 +312,12 @@ static int snd_ctl_led_reset(int card_number, unsigned int group)
                if (!snd_ctl_led_card_valid[card_number])
                        return -ENXIO;
                led = &snd_ctl_leds[group];
-repeat:
-               list_for_each_entry(lctl, &led->controls, list)
+               list_for_each_entry_safe(lctl, _lctl, &led->controls, list)
                        if (lctl->card == card) {
                                vd = &lctl->kctl->vd[lctl->index_offset];
                                vd->access &= ~group_to_access(group);
                                snd_ctl_led_ctl_destroy(lctl);
                                change = true;
-                               goto repeat;
                        }
        }
        if (change)