From c7c351ab3f6e342d1bae7c19f39fdf7d12da1f9a Mon Sep 17 00:00:00 2001 From: Shaleen Agrawal Date: Wed, 23 Jun 2021 11:10:57 -0700 Subject: [PATCH] ANDROID: sched: add restricted tracehooks for 32bit execve Pre and post tracepoints in force_compatible_cpus_allowed_ptr() need to be restricted hooks so that they can sleep. The old non-restricted versions need to stay in place temporarily for KMI stability. They will be removed by aosp/1742588. Bug: 187917024 Change-Id: If630554b1c8fa2e8ccb79c89945c55e17756e6a8 Signed-off-by: Shaleen Agrawal --- drivers/android/vendor_hooks.c | 2 ++ include/trace/hooks/sched.h | 7 +++++++ kernel/sched/core.c | 2 ++ 3 files changed, 11 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 2cff702df817..b8fab55cbc16 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -331,3 +331,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sha256); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_expandkey); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_encrypt); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_decrypt); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_force_compatible_pre); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_force_compatible_post); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 622454f6f8c8..8c2fdd2f76c6 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -378,6 +378,13 @@ DECLARE_HOOK(android_vh_force_compatible_post, TP_PROTO(void *unused), TP_ARGS(unused)); +DECLARE_RESTRICTED_HOOK(android_rvh_force_compatible_pre, + TP_PROTO(void *unused), + TP_ARGS(unused), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_force_compatible_post, + TP_PROTO(void *unused), + TP_ARGS(unused), 1); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 332cfe2e5415..64288d005bb4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2106,6 +2106,7 @@ void force_compatible_cpus_allowed_ptr(struct task_struct *p) * lock to ensure that the migration succeeds. */ trace_android_vh_force_compatible_pre(NULL); + trace_android_rvh_force_compatible_pre(NULL); cpus_read_lock(); if (!cpumask_available(new_mask)) goto out_set_mask; @@ -2131,6 +2132,7 @@ out_set_mask: out_free_mask: cpus_read_unlock(); trace_android_vh_force_compatible_post(NULL); + trace_android_rvh_force_compatible_post(NULL); free_cpumask_var(new_mask); }