From ca34f87ed8d3d5448c2b1a88c705f6c40c87779e Mon Sep 17 00:00:00 2001
From: Kamal Negi <kamaln@codeaurora.org>
Date: Fri, 18 Nov 2016 11:55:20 +0530
Subject: [PATCH] Check for TX event before waiting for an event

Check for an event before waiting for an event. If event already signalled
and we wait for an event without checking, it can lead to an infinite wait
for signal. This results in functional failure.

CRs-Fixed: 1091781
Change-Id: I7bb1ef12f4622f9d94621a9c486a771226aba9f4
---
 fm_hci/fm_hci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fm_hci/fm_hci.c b/fm_hci/fm_hci.c
index a3666af..c48edd5 100644
--- a/fm_hci/fm_hci.c
+++ b/fm_hci/fm_hci.c
@@ -338,7 +338,8 @@ static void* hci_tx_thread(void *arg)
 
     while (lib_running) {
         pthread_mutex_lock(&hci->event_lock);
-        pthread_cond_wait(&hci->event_cond, &hci->event_lock);
+        if (!(ready_events & HC_EVENT_TX))
+            pthread_cond_wait(&hci->event_cond, &hci->event_lock);
         ALOGE("%s: ready_events= %d", __func__, ready_events);
         events = ready_events;
         if (ready_events & HC_EVENT_TX)
-- 
GitLab