ANDROID: madvise: add vendor hook to bypass madvise
We'd like to let custom vendor module does madvise instead and bypass original madvise. Bug: 400476002 Change-Id: I793478f975cceaa0aad0ec009249352a5cb06358 Signed-off-by: Tangquan Zheng <zhengtangquan@oppo.com>
This commit is contained in:
committed by
Treehugger Robot
parent
08ca8785d3
commit
26c67c4430
@@ -543,6 +543,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_smap_swap_shared);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_armv8pmu_counter_overflowed);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_perf_rotate_context);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_process_madvise_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_madvise_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_pages_prepare_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_pages_ok_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_unref_page_list_bypass);
|
||||
|
@@ -11,6 +11,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_process_madvise_bypass,
|
||||
TP_PROTO(int pidfd, const struct iovec __user *vec, size_t vlen,
|
||||
int behavior, unsigned int flags, ssize_t *ret, bool *bypass),
|
||||
TP_ARGS(pidfd, vec, vlen, behavior, flags, ret, bypass), 1);
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_do_madvise_bypass,
|
||||
TP_PROTO(struct mm_struct *mm, unsigned long start,
|
||||
size_t len_in, int behavior, int *ret, bool *bypass),
|
||||
TP_ARGS(mm, start, len_in, behavior, ret, bypass), 1);
|
||||
struct vm_area_struct;
|
||||
DECLARE_HOOK(android_vh_update_vma_flags,
|
||||
TP_PROTO(struct vm_area_struct *vma),
|
||||
@@ -27,4 +31,4 @@ DECLARE_HOOK(android_vh_madvise_pageout_bypass,
|
||||
|
||||
#endif
|
||||
|
||||
#include <trace/define_trace.h>
|
||||
#include <trace/define_trace.h>
|
||||
|
@@ -1544,6 +1544,14 @@ int do_madvise(struct mm_struct *mm, unsigned long start, size_t len_in, int beh
|
||||
|
||||
SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
|
||||
{
|
||||
bool bypass = false;
|
||||
int ret;
|
||||
|
||||
trace_android_rvh_do_madvise_bypass(current->mm, start,
|
||||
len_in, behavior, &ret, &bypass);
|
||||
if (bypass)
|
||||
return ret;
|
||||
|
||||
return do_madvise(current->mm, start, len_in, behavior);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user