summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-12-06 15:57:22 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-12-06 15:57:22 +0000
commit1f7d4274435c422e1dc4b9fb8c60c0064c53c9bb (patch)
tree66d189636322c7e5cf6e3cdd241186aafba339ea
parent8730cc4e6bc9992491baad9d64ddd20fcd0d0355 (diff)
parent180f91f1f8faf2b5d10d620e97ac1be750848cfb (diff)
Merge "Wraps #exectTransact to set/restore worksource."
-rw-r--r--core/java/android/os/Binder.java12
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);
}