ALSA: seq-dummy: remove deadlock-causing events on close
authorClemens Ladisch <clemens@ladisch.de>
Sun, 25 Jan 2015 13:34:29 +0000 (14:34 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 20 Feb 2015 00:49:39 +0000 (00:49 +0000)
commit3df24449526941627187dd565b8ce99ad10ff444
tree2b3e05b4e53438872282a23f338d91967e8a4661
parent875cf1b62db4f0cfe8c082c78f8f0bb7bb71bc9b
ALSA: seq-dummy: remove deadlock-causing events on close

commit 0767e95bb96d7fdddcd590fb809e6975d93aebc5 upstream.

When the last subscriber to a "Through" port has been removed, the
subscribed destination ports might still be active, so it would be
wrong to send "all sounds off" and "reset controller" events to them.
The proper place for such a shutdown would be the closing of the actual
MIDI port (and close_substream() in rawmidi.c already can do this).

This also fixes a deadlock when dummy_unuse() tries to send events to
its own port that is already locked because it is being freed.

Reported-by: Peter Billam <peter@www.pjb.com.au>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
sound/core/seq/seq_dummy.c