summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steven Moreland <smoreland@google.com> 2024-10-15 00:50:43 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2024-10-15 00:50:43 +0000
commita26652b0efc85bb8da1fb7f11a59929238f85b8a (patch)
treee50f77249ae39506ba52c61ca2ce953d92fffd48
parent9a01911addef254b95d2297a71e8064325103d8a (diff)
parentdf75cf60875e87f3445c117def03064e408394c7 (diff)
Merge "libbinder: also avaid sWarningCallback lock" into main
-rw-r--r--libs/binder/BpBinder.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/binder/BpBinder.cpp b/libs/binder/BpBinder.cpp
index eae844ca03..3758b6521c 100644
--- a/libs/binder/BpBinder.cpp
+++ b/libs/binder/BpBinder.cpp
@@ -197,7 +197,9 @@ sp<BpBinder> BpBinder::create(int32_t handle, std::function<void()>* postTask) {
&& currentValue < sBinderProxyCountHighWatermark
&& ((trackedValue & WARNING_REACHED_MASK) == 0)) [[unlikely]] {
sTrackingMap[trackedUid] |= WARNING_REACHED_MASK;
- if (sWarningCallback) sWarningCallback(trackedUid);
+ if (sWarningCallback) {
+ *postTask = [=]() { sWarningCallback(trackedUid); };
+ }
} else if (currentValue >= sBinderProxyCountHighWatermark) {
ALOGE("Too many binder proxy objects sent to uid %d from uid %d (%d proxies held)",
getuid(), trackedUid, trackedValue);