summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2009-10-21 09:10:16 +0200
committerTakashi Iwai <tiwai@suse.de>2009-11-10 16:21:30 +0100
commit16fb109644b5644e42ececeff644514de6f4bd03 (patch)
tree8f05be8292e049627ac800b4bff301e0a7e84f05
parent8579d2d7779d7ff41ea2a0183015e0e5038f1043 (diff)
downloadlinux-3.10-16fb109644b5644e42ececeff644514de6f4bd03.tar.gz
linux-3.10-16fb109644b5644e42ececeff644514de6f4bd03.tar.bz2
linux-3.10-16fb109644b5644e42ececeff644514de6f4bd03.zip
sound: rawmidi: fix checking of O_APPEND when opening MIDI device
Commit 9a1b64caac82aa02cb74587ffc798e6f42c6170a in 2.6.30 dropped the check that a substream must already have been opened with O_APPEND to be able to open it a second time. This would make it possible for a substream to be switched to append mode, which would mean that non-atomic writes would fail unexpectedly. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/core/rawmidi.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/core/rawmidi.c b/sound/core/rawmidi.c
index 3071e6f5801..091405385e1 100644
--- a/sound/core/rawmidi.c
+++ b/sound/core/rawmidi.c
@@ -248,7 +248,8 @@ static int assign_substream(struct snd_rawmidi *rmidi, int subdevice,
list_for_each_entry(substream, &s->substreams, list) {
if (substream->opened) {
if (stream == SNDRV_RAWMIDI_STREAM_INPUT ||
- !(mode & SNDRV_RAWMIDI_LFLG_APPEND))
+ !(mode & SNDRV_RAWMIDI_LFLG_APPEND) ||
+ !substream->append)
continue;
}
if (subdevice < 0 || subdevice == substream->number) {