mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
ALSA: pcm: fix blocking while loop in snd_pcm_update_hw_ptr0()
When period interrupts are disabled, while loop in snd_pcm_update_hw_ptr0() results in the machine locking up if runtime->hw_ptr_buffer_jiffies is 0. Validate runtime->hw_ptr_buffer_jiffies value before while loop to avoid delta check. CRs-Fixed: 1109229 Change-Id: Ib20b71c70aa4a8bee2837d1f3b5a91ad4ce083da Signed-off-by: Preetam Singh Ranawat <apranawat@codeaurora.org>
This commit is contained in:
parent
a70116e190
commit
15555d3e6f
1 changed files with 5 additions and 0 deletions
|
|
@ -341,7 +341,12 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
|
|||
* the elapsed time to detect xruns.
|
||||
*/
|
||||
jdelta = curr_jiffies - runtime->hw_ptr_jiffies;
|
||||
#ifdef CONFIG_AUDIO_QGKI
|
||||
if ((jdelta < runtime->hw_ptr_buffer_jiffies / 2) ||
|
||||
(runtime->hw_ptr_buffer_jiffies <= 0))
|
||||
#else
|
||||
if (jdelta < runtime->hw_ptr_buffer_jiffies / 2)
|
||||
#endif
|
||||
goto no_delta_check;
|
||||
hdelta = jdelta - delta * HZ / runtime->rate;
|
||||
xrun_threshold = runtime->hw_ptr_buffer_jiffies / 2 + 1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue