]> www.infradead.org Git - linux.git/commitdiff
ALSA: control: Allow NULL passed to snd_ctl_remove()
authorTakashi Iwai <tiwai@suse.de>
Mon, 17 Jun 2024 10:05:23 +0000 (12:05 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 18 Jun 2024 10:51:35 +0000 (12:51 +0200)
There are lots of code checking NULL for kcontrol passed to
snd_ctl_remove() in the caller side.  Let's make snd_ctl_remove()
accepting the NULL kcontrol instead a la free(), so that we can clean
up the caller side.

Link: https://lore.kernel.org/20240617100529.6667-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/control.c

index 1dd2337e29300053874940b589861e8b71cef5d3..f64a555f404f0af1952d583a481345e6974e6d0d 100644 (file)
@@ -604,6 +604,7 @@ static inline int snd_ctl_remove_locked(struct snd_card *card,
  *
  * Removes the control from the card and then releases the instance.
  * You don't need to call snd_ctl_free_one().
+ * Passing NULL to @kcontrol argument is allowed as noop.
  *
  * Return: 0 if successful, or a negative error code on failure.
  *
@@ -611,6 +612,8 @@ static inline int snd_ctl_remove_locked(struct snd_card *card,
  */
 int snd_ctl_remove(struct snd_card *card, struct snd_kcontrol *kcontrol)
 {
+       if (!kcontrol)
+               return 0;
        guard(rwsem_write)(&card->controls_rwsem);
        return snd_ctl_remove_locked(card, kcontrol);
 }