summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Li Li <dualli@google.com> 2022-12-07 21:51:19 -0800
committer Li Li <dualli@google.com> 2022-12-07 22:08:53 -0800
commit0e3443d157b9d18bc1d9d6a26becb1ff930efa0d (patch)
tree95e66799a526c1baee0c76a9bb71bf164bdab6ea
parent9c0835a83851d3d841180f4057fd85e65701bae2 (diff)
Support BR_TRANSACTION_PENDING_FROZEN
When an async binder transaction is sent to a frozen process, the kernel binder driver returns BR_TRANSACTION_PENDING_FROZEN. This tells the user space app that pending async binder transaction won't be processed until the target process is unfrozen at an unspecified time in the future. Generally all binder transactions to frozen processes should be avoided to prevent the kernel async binder buffer from running out. Bug: 253913841 Test: freeze process and check logcat Change-Id: Ie0191b0b3b6b0a4a8481f27f3b0e64e4c1279cb5
-rw-r--r--libs/binder/IPCThreadState.cpp4
-rw-r--r--libs/binder/binder_module.h5
2 files changed, 9 insertions, 0 deletions
diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp
index 77703749a1..c0f3e3060e 100644
--- a/libs/binder/IPCThreadState.cpp
+++ b/libs/binder/IPCThreadState.cpp
@@ -1017,6 +1017,10 @@ status_t IPCThreadState::waitForResponse(Parcel *reply, status_t *acquireResult)
if (!reply && !acquireResult) goto finish;
break;
+ case BR_TRANSACTION_PENDING_FROZEN:
+ ALOGW("Sending oneway calls to frozen process.");
+ goto finish;
+
case BR_DEAD_REPLY:
err = DEAD_OBJECT;
goto finish;
diff --git a/libs/binder/binder_module.h b/libs/binder/binder_module.h
index 793795e1d4..eef07aef2d 100644
--- a/libs/binder/binder_module.h
+++ b/libs/binder/binder_module.h
@@ -100,4 +100,9 @@ struct binder_frozen_status_info {
#define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
#endif // BINDER_ENABLE_ONEWAY_SPAM_DETECTION
+#ifndef BR_TRANSACTION_PENDING_FROZEN
+// Temporary definition of BR_TRANSACTION_PENDING_FROZEN until UAPI binder.h includes it.
+#define BR_TRANSACTION_PENDING_FROZEN _IO('r', 20)
+#endif // BR_TRANSACTION_PENDING_FROZEN
+
#endif // _BINDER_MODULE_H_