From c05e52aa04db165bd16b39fcd14e1503c61047eb Mon Sep 17 00:00:00 2001 From: davidwang Date: Sat, 19 Jul 2025 19:31:04 +0800 Subject: [PATCH] ANDROID: vendor_hooks: Add hooks in filemap_get_folio Add hooks for page allocation by fgp_flags and gfp_mask type. Bug: 434052615 Change-Id: I1c70fb6ad6a83a2b688898d186d9bed97ccfe563 Signed-off-by: davidwang --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 3 +++ mm/filemap.c | 3 +++ 3 files changed, 7 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index c78e6abd094f..b3b8f473193e 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -506,6 +506,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_check); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_get_folio); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_get_folio_gfp); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_f2fs_file_open); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_begin); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_end); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 9612397bcf38..b348f20eaf0b 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -149,6 +149,9 @@ DECLARE_HOOK(android_vh_filemap_get_folio, TP_PROTO(struct address_space *mapping, pgoff_t index, int fgp_flags, gfp_t gfp_mask, struct folio *folio), TP_ARGS(mapping, index, fgp_flags, gfp_mask, folio)); +DECLARE_HOOK(android_vh_filemap_get_folio_gfp, + TP_PROTO(struct address_space *mapping, int fgp_flags, gfp_t *gfp_mask), + TP_ARGS(mapping, fgp_flags, gfp_mask)); DECLARE_RESTRICTED_HOOK(android_rvh_madvise_pageout_begin, TP_PROTO(void **private), TP_ARGS(private), 1); diff --git a/mm/filemap.c b/mm/filemap.c index 65dc8d2889db..378136064103 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -1963,6 +1963,9 @@ no_page: gfp &= ~GFP_KERNEL; gfp |= GFP_NOWAIT | __GFP_NOWARN; } + + trace_android_vh_filemap_get_folio_gfp(mapping, fgp_flags, &gfp); + if (WARN_ON_ONCE(!(fgp_flags & (FGP_LOCK | FGP_FOR_MMAP)))) fgp_flags |= FGP_LOCK;