35 lines
1.1 KiB
Diff
35 lines
1.1 KiB
Diff
|
From 048568bbea700dfd9921b40321f8d5aa7e5ef417 Mon Sep 17 00:00:00 2001
|
||
|
From: "Alexander E. Patrakov" <patrakov@gmail.com>
|
||
|
Date: Mon, 15 Sep 2014 20:17:47 +0600
|
||
|
Subject: [PATCH] pcm, rate: hw_avail must not be negative before starting the
|
||
|
stream
|
||
|
|
||
|
If it is, then it means most likely the driver problem, so we should
|
||
|
return error immediately instead.
|
||
|
|
||
|
Signed-off-by: Alexander E. Patrakov <patrakov@gmail.com>
|
||
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||
|
---
|
||
|
src/pcm/pcm_rate.c | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c
|
||
|
index 736d5583cd4c..c76db25b1183 100644
|
||
|
--- a/src/pcm/pcm_rate.c
|
||
|
+++ b/src/pcm/pcm_rate.c
|
||
|
@@ -1069,7 +1069,10 @@ static int snd_pcm_rate_start(snd_pcm_t *pcm)
|
||
|
gettimestamp(&rate->trigger_tstamp, pcm->tstamp_type);
|
||
|
|
||
|
avail = snd_pcm_mmap_playback_hw_avail(rate->gen.slave);
|
||
|
- if (avail <= 0) {
|
||
|
+ if (avail < 0) /* can't happen on healthy drivers */
|
||
|
+ return -EBADFD;
|
||
|
+
|
||
|
+ if (avail == 0) {
|
||
|
/* postpone the trigger since we have no data committed yet */
|
||
|
rate->start_pending = 1;
|
||
|
return 0;
|
||
|
--
|
||
|
2.1.2
|
||
|
|