aboutsummaryrefslogtreecommitdiffstats
path: root/sound/core
diff options
context:
space:
mode:
Diffstat (limited to 'sound/core')
-rw-r--r--sound/core/oss/pcm_oss.c7
-rw-r--r--sound/core/pcm.c2
-rw-r--r--sound/core/pcm_native.c6
3 files changed, 9 insertions, 6 deletions
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 91114c7aeff5..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,10 +1757,11 @@ 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
1763 if (! pcm_oss_file->streams[0] && pcm_oss_file->streams[1]) { 1764 if (!pcm_oss_file->streams[0] && !pcm_oss_file->streams[1]) {
1764 snd_pcm_oss_release_file(pcm_oss_file); 1765 snd_pcm_oss_release_file(pcm_oss_file);
1765 return -EINVAL; 1766 return -EINVAL;
1766 } 1767 }
@@ -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]);
diff --git a/sound/core/pcm.c b/sound/core/pcm.c
index 5d7eb123b999..122e10a61ab9 100644
--- a/sound/core/pcm.c
+++ b/sound/core/pcm.c
@@ -196,7 +196,7 @@ static char *snd_pcm_format_names[] = {
196 FORMAT(U18_3BE), 196 FORMAT(U18_3BE),
197}; 197};
198 198
199const char *snd_pcm_format_name(snd_pcm_format_t format) 199static const char *snd_pcm_format_name(snd_pcm_format_t format)
200{ 200{
201 return snd_pcm_format_names[format]; 201 return snd_pcm_format_names[format];
202} 202}
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 964e4c47a7f1..0860c5a84502 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -2007,14 +2007,16 @@ static void pcm_release_private(struct snd_pcm_substream *substream)
2007void snd_pcm_release_substream(struct snd_pcm_substream *substream) 2007void snd_pcm_release_substream(struct snd_pcm_substream *substream)
2008{ 2008{
2009 snd_pcm_drop(substream); 2009 snd_pcm_drop(substream);
2010 if (substream->pcm_release)
2011 substream->pcm_release(substream);
2012 if (substream->hw_opened) { 2010 if (substream->hw_opened) {
2013 if (substream->ops->hw_free != NULL) 2011 if (substream->ops->hw_free != NULL)
2014 substream->ops->hw_free(substream); 2012 substream->ops->hw_free(substream);
2015 substream->ops->close(substream); 2013 substream->ops->close(substream);
2016 substream->hw_opened = 0; 2014 substream->hw_opened = 0;
2017 } 2015 }
2016 if (substream->pcm_release) {
2017 substream->pcm_release(substream);
2018 substream->pcm_release = NULL;
2019 }
2018 snd_pcm_detach_substream(substream); 2020 snd_pcm_detach_substream(substream);
2019} 2021}
2020 2022