ALSA: ctl: Stop notification after disconnection
authorTakashi Iwai <tiwai@suse.de>
Fri, 8 Jul 2016 06:05:19 +0000 (08:05 +0200)
committerWilly Tarreau <w@1wt.eu>
Sat, 27 Aug 2016 09:40:27 +0000 (11:40 +0200)
commit f388cdcdd160687c6650833f286b9c89c50960ff upstream.

snd_ctl_remove() has a notification for the removal event.  It's
superfluous when done during the device got disconnected.  Although
the notification itself is mostly harmless, it may potentially be
harmful, and should be suppressed.  Actually some components PCM may
free ctl elements during the disconnect or free callbacks, thus it's
no theoretical issue.

This patch adds the check of card->shutdown flag for avoiding
unnecessary notifications after (or during) the disconnect.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Willy Tarreau <w@1wt.eu>
sound/core/control.c

index 3fcead61f0efbac23f3a47b11a056020a03575a1..251bc575f5c37cc4fb6b9025e19d7e48375e56da 100644 (file)
@@ -150,6 +150,8 @@ void snd_ctl_notify(struct snd_card *card, unsigned int mask,
        
        if (snd_BUG_ON(!card || !id))
                return;
+       if (card->shutdown)
+               return;
        read_lock(&card->ctl_files_rwlock);
 #if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
        card->mixer_oss_change_count++;