diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 6b72bf0a35c3..eade309c193f 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -436,6 +436,14 @@ DECLARE_RESTRICTED_HOOK(android_rvh_update_rt_rq_load_avg, TP_PROTO(u64 now, struct rq *rq, struct task_struct *tsk, int running), TP_ARGS(now, rq, tsk, running), 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, bool *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 2be8d71c07da..c32a1fb373d0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2524,6 +2524,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); } static void @@ -8205,7 +8206,8 @@ out_free_cpus_allowed: long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) { struct task_struct *p; - int retval; + int retval = 0; + bool skip = false; rcu_read_lock(); @@ -8234,6 +8236,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_put_task; retval = security_task_setscheduler(p); if (retval) goto out_put_task; diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 450c71c78c8f..b5e529e0bc70 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -107,3 +107,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_remove_entity_load_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_blocked_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rt_rq_load_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_by_task); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_comm); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_setaffinity_early);