diff options
-rw-r--r-- | sound/soc/soc-core.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 65ff61211a85..db3075dd11fe 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -505,6 +505,16 @@ static int soc_pcm_apply_symmetry(struct snd_pcm_substream *substream) | |||
505 | !rtd->dai_link->symmetric_rates) | 505 | !rtd->dai_link->symmetric_rates) |
506 | return 0; | 506 | return 0; |
507 | 507 | ||
508 | /* This can happen if multiple streams are starting simultaneously - | ||
509 | * the second can need to get its constraints before the first has | ||
510 | * picked a rate. Complain and allow the application to carry on. | ||
511 | */ | ||
512 | if (!rtd->rate) { | ||
513 | dev_warn(&rtd->dev, | ||
514 | "Not enforcing symmetric_rates due to race\n"); | ||
515 | return 0; | ||
516 | } | ||
517 | |||
508 | dev_dbg(&rtd->dev, "Symmetry forces %dHz rate\n", rtd->rate); | 518 | dev_dbg(&rtd->dev, "Symmetry forces %dHz rate\n", rtd->rate); |
509 | 519 | ||
510 | ret = snd_pcm_hw_constraint_minmax(substream->runtime, | 520 | ret = snd_pcm_hw_constraint_minmax(substream->runtime, |