diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index e811b4e7d49b..31d3dca9b0ce 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -247,3 +247,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_swappiness); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_comm); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_setaffinity_early); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 3230dd761467..8cf136627278 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -294,6 +294,14 @@ DECLARE_HOOK(android_vh_account_task_time, DECLARE_RESTRICTED_HOOK(android_rvh_post_init_entity_util_avg, TP_PROTO(struct sched_entity *se), TP_ARGS(se), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_set_cpus_allowed_comm, + TP_PROTO(struct task_struct *p, const struct cpumask *new_mask), + TP_ARGS(p, new_mask), 1); + +DECLARE_HOOK(android_vh_sched_setaffinity_early, + TP_PROTO(struct task_struct *p, const struct cpumask *new_mask, int *retval), + TP_ARGS(p, new_mask, retval)); /* 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 6f7d45c1abc4..82504cd4e343 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1884,6 +1884,7 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma { cpumask_copy(&p->cpus_mask, new_mask); p->nr_cpus_allowed = cpumask_weight(new_mask); + trace_android_rvh_set_cpus_allowed_comm(p, new_mask); } void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) @@ -6061,6 +6062,7 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) cpumask_var_t cpus_allowed, new_mask; struct task_struct *p; int retval; + int skip = 0; rcu_read_lock(); @@ -6096,6 +6098,9 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) rcu_read_unlock(); } + trace_android_vh_sched_setaffinity_early(p, in_mask, &skip); + if (skip) + goto out_free_new_mask; retval = security_task_setscheduler(p); if (retval) goto out_free_new_mask;