
We should allow write and thus poll as well when stream has been prepared. This allows usermode to write buffers ahead of time
Signed-off-by: Vinod Koul vinod.koul@intel.com --- sound/core/compress_offload.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c index fb570c8..898a1d9 100644 --- a/sound/core/compress_offload.c +++ b/sound/core/compress_offload.c @@ -263,7 +263,6 @@ static ssize_t snd_compr_write(struct file *f, const char __user *buf,
stream = &data->stream; mutex_lock(&stream->device->lock); - /* write is allowed when stream is running or has been steup */ /* * if the stream is in paused state, return the * number of bytes consumed as 0 @@ -272,8 +271,11 @@ static ssize_t snd_compr_write(struct file *f, const char __user *buf, mutex_unlock(&stream->device->lock); return retval; } + + /* write is allowed when stream is running or prepared or in setup */ if (stream->runtime->state != SNDRV_PCM_STATE_SETUP && - stream->runtime->state != SNDRV_PCM_STATE_RUNNING) { + stream->runtime->state != SNDRV_PCM_STATE_RUNNING && + stream->runtime->state != SNDRV_PCM_STATE_PREPARED) { mutex_unlock(&stream->device->lock); return -EBADFD; } @@ -380,8 +382,7 @@ static unsigned int snd_compr_poll(struct file *f, poll_table *wait) return -EFAULT;
mutex_lock(&stream->device->lock); - if (stream->runtime->state == SNDRV_PCM_STATE_PAUSED || - stream->runtime->state == SNDRV_PCM_STATE_OPEN) { + if (stream->runtime->state == SNDRV_PCM_STATE_OPEN) { retval = -EBADFD; goto out; }