Snap for 7995257 from 48c76d24fa5a6a39abe84a423b755f91ba2d0536 to sc-v2-release
Change-Id: I9a2cdac6b6e76847737201840b8fb47603c8ea44
diff --git a/src/gki/ulinux/gki_ulinux.cc b/src/gki/ulinux/gki_ulinux.cc
index 7262b5f..a3679bf 100644
--- a/src/gki/ulinux/gki_ulinux.cc
+++ b/src/gki/ulinux/gki_ulinux.cc
@@ -290,8 +290,6 @@
* GKI_exception problem due to btu->hci sleep request events */
for (task_id = GKI_MAX_TASKS; task_id > 0; task_id--) {
if (gki_cb.com.OSRdyTbl[task_id - 1] != TASK_DEAD) {
- gki_cb.com.OSRdyTbl[task_id - 1] = TASK_DEAD;
-
/* paranoi settings, make sure that we do not execute any mailbox events
*/
gki_cb.com.OSWaitEvt[task_id - 1] &=
@@ -629,7 +627,7 @@
if (gki_cb.com.OSTaskQFirst[rtask][3])
gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_3_EVT_MASK;
- if (gki_cb.com.OSRdyTbl[rtask] == TASK_DEAD) {
+ if (gki_cb.com.OSWaitEvt[rtask] == EVENT_MASK(GKI_SHUTDOWN_EVT)) {
gki_cb.com.OSWaitEvt[rtask] = 0;
/* unlock thread_evt_mutex as pthread_cond_wait() does auto lock when cond
* is met */
@@ -1073,6 +1071,12 @@
return;
}
GKI_disable();
+ if (gki_cb.com.OSRdyTbl[task_id] == TASK_DEAD) {
+ GKI_enable();
+ LOG(WARNING) << StringPrintf("%s: task_id %d was already stopped.",
+ __func__, task_id);
+ return;
+ }
gki_cb.com.OSRdyTbl[task_id] = TASK_DEAD;
/* Destroy mutex and condition variable objects */