ASoC: atmel: mchp-pdmc: Use snd_ctl_remove_id()
authorTakashi Iwai <tiwai@suse.de>
Tue, 18 Jul 2023 14:12:56 +0000 (16:12 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 20 Jul 2023 08:01:09 +0000 (10:01 +0200)
Use the standard snd_ctl_remove_id() helper instead of open code for
removing a kctl.  This helps for avoiding possible races.

Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Acked-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20230718141304.1032-4-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/soc/atmel/mchp-pdmc.c

index c79c73e..1a069f4 100644 (file)
@@ -386,7 +386,6 @@ static int mchp_pdmc_open(struct snd_soc_component *component,
        for (i = 0; i < ARRAY_SIZE(mchp_pdmc_snd_controls); i++) {
                const struct snd_kcontrol_new *control = &mchp_pdmc_snd_controls[i];
                struct snd_ctl_elem_id id;
-               struct snd_kcontrol *kctl;
                int err;
 
                if (component->name_prefix)
@@ -400,17 +399,10 @@ static int mchp_pdmc_open(struct snd_soc_component *component,
                id.device = control->device;
                id.subdevice = control->subdevice;
                id.index = control->index;
-               kctl = snd_ctl_find_id(component->card->snd_card, &id);
-               if (!kctl) {
-                       dev_err(component->dev, "Failed to find %s\n", control->name);
-                       continue;
-               }
-               err = snd_ctl_remove(component->card->snd_card, kctl);
-               if (err < 0) {
+               err = snd_ctl_remove_id(component->card->snd_card, &id);
+               if (err < 0)
                        dev_err(component->dev, "%d: Failed to remove %s\n", err,
                                control->name);
-                       continue;
-               }
        }
 
        return 0;