From 3404298ae04c3051ea1723aba481ba46608cc5bf Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Thu, 24 Jun 2021 10:10:14 +0800 Subject: [PATCH] ANDROID: Fix lost track action type in save_track_hash Transmit the track action type to save_track_hash, otherwise we do not know it is allocation stack or free stack. Fixes: 8bc6337823c6 ("ANDROID: vendor_hooks: add hooks for slab memory leak debugging") Bug: 184928480 Bug: 395197442 Signed-off-by: Liujie Xie Change-Id: I74c50c02cfb4ebbf3e9fecdf125e76946ff4e7d1 (cherry picked from commit 7d216e2512082853f4cf0c220a1b48119203144f) Signed-off-by: huzhanyuan Signed-off-by: wengle --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 4 ++++ mm/slub.c | 1 + 3 files changed, 6 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 8752beada89b..63b12a6cc393 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -365,6 +365,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_warn_alloc_tune_ratelimit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_warn_alloc_show_mem_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_use_vm_swappiness); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_scan_control); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_track_hash); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_signal); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_process_madvise_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_pageout_return_error); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index b88b67892755..21174cd941f5 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -12,6 +12,7 @@ struct shmem_inode_info; struct folio; struct folio_batch; +struct track; DECLARE_RESTRICTED_HOOK(android_rvh_shmem_get_folio, TP_PROTO(struct shmem_inode_info *info, struct folio **folio, int order), @@ -325,6 +326,9 @@ DECLARE_HOOK(android_vh_alloc_pages_failure_bypass, TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags, int migratetype, struct page **page), TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page)); +DECLARE_HOOK(android_vh_save_track_hash, + TP_PROTO(bool alloc, struct track *p), + TP_ARGS(alloc, p)); #endif /* _TRACE_HOOK_MM_H */ /* This part must be outside protection */ diff --git a/mm/slub.c b/mm/slub.c index 233cf7853205..8eab8f476207 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -996,6 +996,7 @@ static void set_track_update(struct kmem_cache *s, void *object, p->cpu = smp_processor_id(); p->pid = current->pid; p->when = jiffies; + trace_android_vh_save_track_hash(alloc == TRACK_ALLOC, p); } static __always_inline void set_track(struct kmem_cache *s, void *object,