diff options
| author | 2018-12-06 15:57:22 +0000 | |
|---|---|---|
| committer | 2018-12-06 15:57:22 +0000 | |
| commit | 1f7d4274435c422e1dc4b9fb8c60c0064c53c9bb (patch) | |
| tree | 66d189636322c7e5cf6e3cdd241186aafba339ea | |
| parent | 8730cc4e6bc9992491baad9d64ddd20fcd0d0355 (diff) | |
| parent | 180f91f1f8faf2b5d10d620e97ac1be750848cfb (diff) | |
Merge "Wraps #exectTransact to set/restore worksource."
| -rw-r--r-- | core/java/android/os/Binder.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index 1efbc6b401c0..2ae796c1ec56 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -919,6 +919,16 @@ public class Binder implements IBinder { // Entry point from android_util_Binder.cpp's onTransact private boolean execTransact(int code, long dataObj, long replyObj, int flags) { + final long origWorkSource = ThreadLocalWorkSource.setUid(Binder.getCallingUid()); + try { + return execTransactInternal(code, dataObj, replyObj, flags); + } finally { + ThreadLocalWorkSource.restore(origWorkSource); + } + } + + private boolean execTransactInternal(int code, long dataObj, long replyObj, + int flags) { // Make sure the observer won't change while processing a transaction. final BinderInternal.Observer observer = sObserver; final CallSession callSession = @@ -932,7 +942,6 @@ public class Binder implements IBinder { // Log any exceptions as warnings, don't silently suppress them. // If the call was FLAG_ONEWAY then these exceptions disappear into the ether. final boolean tracingEnabled = Binder.isTracingEnabled(); - final long origWorkSource = ThreadLocalWorkSource.setUid(Binder.getCallingUid()); try { if (tracingEnabled) { final String transactionName = getTransactionName(code); @@ -959,7 +968,6 @@ public class Binder implements IBinder { } res = true; } finally { - ThreadLocalWorkSource.restore(origWorkSource); if (tracingEnabled) { Trace.traceEnd(Trace.TRACE_TAG_ALWAYS); } |