From 29a00abe4379dab2a34e918f6ce5f991e683ade5 Mon Sep 17 00:00:00 2001 From: liangjlee Date: Fri, 10 May 2024 01:39:10 +0800 Subject: [PATCH] ANDROID: mm: Add restricted vendor hook in do_read_fault() This patch add a restricted vendor hook in do_read_fault() for tracking which file and offsets are faulted. Bug: 336736235 Change-Id: I425690e58550c4ac44912daa10b5eac0728bfb4e Signed-off-by: liangjlee --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 4 ++++ mm/memory.c | 2 ++ 3 files changed, 7 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index e8af7b774588..a45022e569e2 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -416,3 +416,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_hibernated_do_mem_alloc); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_hibernate_save_cmp_len); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_read_lazy_flag); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_tsk_need_resched_lazy); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_read_fault); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 81ce1268c4fd..e13159239923 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -25,6 +25,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags, DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask, TP_PROTO(unsigned int *flags), /* gfp_t *flags */ TP_ARGS(flags), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_do_read_fault, + TP_PROTO(struct file *file, pgoff_t pgoff, + unsigned long *fault_around_bytes), + TP_ARGS(file, pgoff, fault_around_bytes), 1); DECLARE_HOOK(android_vh_dm_bufio_shrink_scan_bypass, TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass), TP_ARGS(dm_bufio_current_allocated, bypass)); diff --git a/mm/memory.c b/mm/memory.c index ffbf374a787d..68634e96c175 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4647,6 +4647,8 @@ static vm_fault_t do_read_fault(struct vm_fault *vmf) vm_fault_t ret = 0; trace_android_vh_tune_fault_around_bytes(&fault_around_bytes); + trace_android_rvh_do_read_fault(vmf->vma->vm_file, vmf->pgoff, + &fault_around_bytes); /* * Let's call ->map_pages() first and use ->fault() as fallback