aboutsummaryrefslogtreecommitdiffstats
path: root/sound/core/oss
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-04-06 13:47:42 -0400
committerJaroslav Kysela <perex@suse.cz>2006-04-12 05:34:04 -0400
commit1576274d30286dd048967176dc8e75e192051ff5 (patch)
tree5b8304905185ec023106afc4d53c3d77f736cd76 /sound/core/oss
parentbbdc1b7dbe41578da7c9a6266cf450abe97e4ca7 (diff)
[ALSA] Fix Oops of PCM OSS emulation
Modules: PCM Midlevel,ALSA<-OSS emulation Fix Oops of PCM OSS emulation occuring when multiple playback is used. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core/oss')
-rw-r--r--sound/core/oss/pcm_oss.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 7c0c4e1d6943..c5978d6c6080 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -1682,7 +1682,7 @@ static void snd_pcm_oss_init_substream(struct snd_pcm_substream *substream,
1682 substream->oss.setup = *setup; 1682 substream->oss.setup = *setup;
1683 if (setup->nonblock) 1683 if (setup->nonblock)
1684 substream->ffile->f_flags |= O_NONBLOCK; 1684 substream->ffile->f_flags |= O_NONBLOCK;
1685 else 1685 else if (setup->block)
1686 substream->ffile->f_flags &= ~O_NONBLOCK; 1686 substream->ffile->f_flags &= ~O_NONBLOCK;
1687 runtime = substream->runtime; 1687 runtime = substream->runtime;
1688 runtime->oss.params = 1; 1688 runtime->oss.params = 1;
@@ -1757,6 +1757,7 @@ static int snd_pcm_oss_open_file(struct file *file,
1757 } 1757 }
1758 1758
1759 pcm_oss_file->streams[idx] = substream; 1759 pcm_oss_file->streams[idx] = substream;
1760 substream->file = pcm_oss_file;
1760 snd_pcm_oss_init_substream(substream, &setup[idx], minor); 1761 snd_pcm_oss_init_substream(substream, &setup[idx], minor);
1761 } 1762 }
1762 1763
@@ -1809,7 +1810,7 @@ static int snd_pcm_oss_open(struct inode *inode, struct file *file)
1809 err = -EFAULT; 1810 err = -EFAULT;
1810 goto __error; 1811 goto __error;
1811 } 1812 }
1812 memset(setup, 0, sizeof(*setup)); 1813 memset(setup, 0, sizeof(setup));
1813 if (file->f_mode & FMODE_WRITE) 1814 if (file->f_mode & FMODE_WRITE)
1814 snd_pcm_oss_look_for_setup(pcm, SNDRV_PCM_STREAM_PLAYBACK, 1815 snd_pcm_oss_look_for_setup(pcm, SNDRV_PCM_STREAM_PLAYBACK,
1815 task_name, &setup[0]); 1816 task_name, &setup[0]);