linux_old1/sound/core
Adam Goode 27423257b7 ALSA: seq: Continue broadcasting events to ports if one of them fails
Sometimes PORT_EXIT messages are lost when a process is exiting.
This happens if you subscribe to the announce port with client A,
then subscribe to the announce port with client B, then kill client A.
Client B will not see the PORT_EXIT message because client A's port is
closing and is earlier in the announce port subscription list. The
for each loop will try to send the announcement to client A and fail,
then will stop trying to broadcast to other ports. Killing B works fine
since the announcement will already have gone to A. The CLIENT_EXIT
message does not get lost.

How to reproduce problem:

*** termA
$ aseqdump -p 0:1
  0:1   Port subscribed            0:1 -> 128:0

*** termB
$ aseqdump -p 0:1

*** termA
  0:1   Client start               client 129
  0:1   Port start                 129:0
  0:1   Port subscribed            0:1 -> 129:0

*** termB
  0:1   Port subscribed            0:1 -> 129:0

*** termA
^C

*** termB
  0:1   Client exit                client 128
   <--- expected Port exit as well (before client exit)

Signed-off-by: Adam Goode <agoode@google.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2014-06-04 17:30:58 +02:00
..
oss ALSA: oss: Use standard printk helpers 2014-02-14 08:14:17 +01:00
seq ALSA: seq: Continue broadcasting events to ports if one of them fails 2014-06-04 17:30:58 +02:00
Kconfig ALSA: core: allow SND_DMAENGINE_PCM use from modules 2013-08-15 18:28:42 +01:00
Makefile ALSA: Merge memalloc code into snd-pcm module 2014-01-09 08:12:57 +01:00
compress_offload.c ALSA: compress: Pass through return value of open ops callback 2014-03-19 15:46:24 +01:00
control.c ALSA: control: Use standard printk helpers 2014-02-14 08:14:14 +01:00
control_compat.c ALSA: control: Use standard printk helpers 2014-02-14 08:14:14 +01:00
ctljack.c ALSA: hda - Add missing inclusion of linux/export.h 2011-11-16 14:28:33 +01:00
device.c ALSA: Clean up snd_device_*() codes 2014-02-25 12:12:52 +01:00
hrtimer.c ALSA: timer: Use standard printk helpers 2014-02-14 08:14:17 +01:00
hwdep.c ALSA: Move EXPORT_SYMBOL() in appropriate places 2014-02-27 16:00:51 +01:00
hwdep_compat.c [PATCH] hwdep_compat missed __user annotations 2006-10-10 15:37:21 -07:00
info.c ALSA: core: Use standard printk helpers 2014-02-14 08:14:15 +01:00
info_oss.c ALSA: remove the main version information 2012-09-04 11:38:32 +02:00
init.c ALSA: Clean up snd_device_*() codes 2014-02-25 12:12:52 +01:00
isadma.c ALSA: core: Use standard printk helpers 2014-02-14 08:14:15 +01:00
jack.c ALSA: jack: Unregister input device at disconnection 2013-11-14 17:22:45 +01:00
memalloc.c ALSA: core: Use standard printk helpers 2014-02-14 08:14:15 +01:00
memory.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
misc.c sound: use printk_get_level and printk_skip_level 2012-07-30 17:25:14 -07:00
pcm.c ALSA: Create sysfs attribute files via groups 2014-02-25 12:12:49 +01:00
pcm_compat.c ALSA: core: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage 2012-10-28 09:52:37 +01:00
pcm_dmaengine.c ALSA: pcm_dmaengine: Add check during device suspend 2014-05-19 11:31:24 +02:00
pcm_lib.c ALSA: pcm: 'BUG:' message unnecessarily triggers kerneloops 2014-04-16 16:20:59 +02:00
pcm_memory.c ALSA: PCM: Warn when buffer preallocation fails 2014-01-11 11:04:23 +01:00
pcm_misc.c ALSA: Add helper function for intersecting two rate masks 2014-01-14 20:42:34 +00:00
pcm_native.c ALSA: pcm: Use standard printk helpers 2014-02-14 08:14:15 +01:00
pcm_timer.c ALSA: pcm: Use standard printk helpers 2014-02-14 08:14:15 +01:00
rawmidi.c ALSA: Move EXPORT_SYMBOL() in appropriate places 2014-02-27 16:00:51 +01:00
rawmidi_compat.c [ALSA] Remove xxx_t typedefs: Raw MIDI 2006-01-03 12:17:35 +01:00
rtctimer.c ALSA: timer: Use standard printk helpers 2014-02-14 08:14:17 +01:00
sgbuf.c ALSA: Make snd_sgbuf_get_{ptr|addr}() available for non-SG cases 2012-09-23 11:24:42 +02:00
sound.c ALSA: Create sysfs attribute files via groups 2014-02-25 12:12:49 +01:00
sound_oss.c ALSA: Use standard device refcount for card accounting 2014-02-14 08:14:13 +01:00
timer.c ALSA: timer: Use standard printk helpers 2014-02-14 08:14:17 +01:00
timer_compat.c ALSA: Kill snd_assert() in sound/core/* 2008-08-13 11:46:35 +02:00
vmaster.c ALSA: core: Use standard printk helpers 2014-02-14 08:14:15 +01:00