diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 8e3ddd90e27c..4160ad9364c0 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -476,6 +476,9 @@ DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_entity_delayed, DECLARE_HOOK(android_vh_tick_nohz_idle_stop_tick, TP_PROTO(void *unused), TP_ARGS(unused)); +DECLARE_HOOK(android_vh_mmput, + TP_PROTO(struct mm_struct *mm), + TP_ARGS(mm)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/fork.c b/kernel/fork.c index 587b7e44f7d3..65b90274f2c3 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1366,8 +1366,10 @@ void mmput(struct mm_struct *mm) { might_sleep(); - if (atomic_dec_and_test(&mm->mm_users)) + if (atomic_dec_and_test(&mm->mm_users)) { + trace_android_vh_mmput(mm); __mmput(mm); + } } EXPORT_SYMBOL_GPL(mmput); diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 8b338e9c740b..4638f162b725 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -124,3 +124,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_cgroup_css_alloc_early); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_cgroup_css_alloc); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_cgroup_css_free); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_entity_delayed); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmput);