From 2f32ed8233e46233c2dd1f6affe3d6db2a55524f Mon Sep 17 00:00:00 2001 From: Sagar Taunk Date: Sun, 27 Sep 2026 12:56:55 +0000 Subject: [PATCH] rust_binder: thread: wire up `transaction_buffer` `alloc/release` tracepoints Call `trace_transaction_alloc_buf()` right after a transaction buffer is successfully allocated in `copy_transaction_data()`, and call `trace_transaction_buffer_release()` when a buffer is freed via `BC_FREE_BUFFER` in `Thread::write()`. Signed-off-by: Sagar Taunk Link: https://patch.msgid.link/20260927125622.676342-4-sagartaunk@proton.me Signed-off-by: Greg Kroah-Hartman --- drivers/android/binder/thread.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/android/binder/thread.rs b/drivers/android/binder/thread.rs index 78dc0ca6f630..c91c885c1292 100644 --- a/drivers/android/binder/thread.rs +++ b/drivers/android/binder/thread.rs @@ -30,6 +30,7 @@ process::{GetWorkOrRegister, Process}, ptr_align, stats::GLOBAL_STATS, + trace::{trace_transaction_alloc_buf, trace_transaction_buffer_release}, transaction::{Transaction, TransactionFlag, TransactionFlags, TransactionInfo}, BinderReturnWriter, DArc, DLArc, DTRWrap, DeliverCode, DeliverToRead, }; @@ -1076,6 +1077,8 @@ pub(crate) fn copy_transaction_data( } }; + trace_transaction_alloc_buf(debug_id, data_size, offsets_size, buffers_size); + let mut buffer_reader = UserSlice::new(info.data_ptr, data_size).reader(); let mut end_of_previous_object = 0; let mut sg_state = None; @@ -1522,6 +1525,7 @@ fn write(self: &Arc, req: &mut BinderWriteRead) -> Result { if buffer.looper_need_return_on_free() { self.inner.lock().looper_need_return = true; } + trace_transaction_buffer_release(buffer.debug_id); drop(buffer); } }