From 7e12b6d8489f68a43b0afb5111a6cfcddb350679 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Fri, 9 Jun 2017 12:00:58 -0700 Subject: [PATCH] Fix thread booster We need to conditionally set the prevPriority only if we enter the first locked section. Otherwise we'll never reset back to the lower priorities. Test: Make sure no binder threads are stuck at 110. Test: go/wm-smoke Bug: 36631902 Change-Id: I8a9c329bc3084371022da91eabee45943c1b8c9f --- .../java/com/android/server/ThreadPriorityBooster.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/ThreadPriorityBooster.java b/services/core/java/com/android/server/ThreadPriorityBooster.java index 0dfecc051a2d5..cc9ac0dfd11e6 100644 --- a/services/core/java/com/android/server/ThreadPriorityBooster.java +++ b/services/core/java/com/android/server/ThreadPriorityBooster.java @@ -43,9 +43,11 @@ public class ThreadPriorityBooster { final int tid = myTid(); final int prevPriority = getThreadPriority(tid); final PriorityState state = mThreadState.get(); - state.prevPriority = prevPriority; - if (state.regionCounter == 0 && prevPriority > mBoostToPriority) { - setThreadPriority(tid, mBoostToPriority); + if (state.regionCounter == 0) { + state.prevPriority = prevPriority; + if (prevPriority > mBoostToPriority) { + setThreadPriority(tid, mBoostToPriority); + } } state.regionCounter++; if (LockGuard.ENABLED) {