From bd21c75ac078ff040283ec6c61d58c2a06ed26b2 Mon Sep 17 00:00:00 2001 From: zhengding chen Date: Wed, 28 Apr 2021 19:24:57 +0800 Subject: [PATCH] ANDROID: vendor_hooks: Add hooks for binder reference. When servicemanager process added service proxy from other process register the service, we want to know the matching relation between handle in the process and service name. Bug: 186604985 Change-Id: I466ae200cf17bc821c61bd92544a8fbe6b220a25 Signed-off-by: zhengding chen Signed-off-by: shenshen mao Signed-off-by: xiaosa liang --- drivers/android/binder.c | 2 ++ drivers/android/vendor_hooks.c | 2 ++ include/trace/hooks/binder.h | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index f0c1b4c8fe42..17a6ce20b765 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -1357,6 +1357,7 @@ retry: "%d new ref %d desc %d for node %d\n", proc->pid, new_ref->data.debug_id, new_ref->data.desc, node->debug_id); + trace_android_vh_binder_new_ref(proc, new_ref->data.desc, new_ref->node->debug_id); binder_node_unlock(node); return new_ref; } @@ -1533,6 +1534,7 @@ err_no_ref: */ static void binder_free_ref(struct binder_ref *ref) { + trace_android_vh_binder_del_ref(ref->proc, ref->data.desc); if (ref->node) binder_free_node(ref->node); kfree(ref->death); diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index dc44c5d486c8..45bcfa4010c7 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -454,3 +454,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_read_fault); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_alloc_pages_reclaim_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_alloc_pages_reclaim_cycle_end); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_bd_link_disk_holder); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_new_ref); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_del_ref); diff --git a/include/trace/hooks/binder.h b/include/trace/hooks/binder.h index 07e856e7fd7c..81d840811cba 100644 --- a/include/trace/hooks/binder.h +++ b/include/trace/hooks/binder.h @@ -112,6 +112,12 @@ DECLARE_HOOK(android_vh_binder_thread_read, TP_PROTO(struct list_head **list, struct binder_proc *proc, struct binder_thread *thread), TP_ARGS(list, proc, thread)); +DECLARE_HOOK(android_vh_binder_new_ref, + TP_PROTO(struct binder_proc *proc, uint32_t ref_desc, int node_debug_id), + TP_ARGS(proc, ref_desc, node_debug_id)); +DECLARE_HOOK(android_vh_binder_del_ref, + TP_PROTO(struct binder_proc *proc, uint32_t ref_desc), + TP_ARGS(proc, ref_desc)); #endif /* _TRACE_HOOK_BINDER_H */ /* This part must be outside protection */ #include