]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ALSA: pcm: Return 0 when size < start_threshold in capture
authorRicardo Biehl Pasquali <pasqualirb@gmail.com>
Sat, 25 Aug 2018 19:53:23 +0000 (16:53 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 17 Nov 2024 13:58:07 +0000 (14:58 +0100)
[ Upstream commit 62ba568f7aef4beb0eda945a2b2a91b7a2b8f215 ]

In __snd_pcm_lib_xfer(), when capture, if state is PREPARED
and size is less than start_threshold nothing can be done.
As there is no error, 0 is returned.

Signed-off-by: Ricardo Biehl Pasquali <pasqualirb@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Stable-dep-of: 4413665dd6c5 ("ALSA: usb-audio: Add quirks for Dell WD19 dock")
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/core/pcm_lib.c

index c376471cf760fca72c9515f2181a9c8792aee345..463c04e82558bbf65db1f0c8698817fb1e823321 100644 (file)
@@ -2178,11 +2178,16 @@ snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream,
                goto _end_unlock;
 
        if (!is_playback &&
-           runtime->status->state == SNDRV_PCM_STATE_PREPARED &&
-           size >= runtime->start_threshold) {
-               err = snd_pcm_start(substream);
-               if (err < 0)
+           runtime->status->state == SNDRV_PCM_STATE_PREPARED) {
+               if (size >= runtime->start_threshold) {
+                       err = snd_pcm_start(substream);
+                       if (err < 0)
+                               goto _end_unlock;
+               } else {
+                       /* nothing to do */
+                       err = 0;
                        goto _end_unlock;
+               }
        }
 
        runtime->twake = runtime->control->avail_min ? : 1;