diff --git a/kernel/sched/core.c b/kernel/sched/core.c index c187e18461b9..f832b7aa0554 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2228,20 +2228,20 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) if (is_migration_disabled(p)) return cpu_online(cpu); + /* check for all cases */ + trace_android_rvh_is_cpu_allowed(cpu, &allowed); + /* Non kernel threads are not allowed during either online or offline. */ - if (!(p->flags & PF_KTHREAD)) { - if (cpu_active(cpu) && task_cpu_possible(cpu, p)) { - trace_android_rvh_is_cpu_allowed(cpu, &allowed); - return allowed; - } else { - return false; - } - } + if (!(p->flags & PF_KTHREAD)) + return cpu_active(cpu) && task_cpu_possible(cpu, p) && allowed; /* KTHREAD_IS_PER_CPU is always allowed. */ if (kthread_is_per_cpu(p)) return cpu_online(cpu); + if (!allowed) + return false; + /* Regular kernel threads don't get to stay during offline. */ if (cpu_dying(cpu)) return false;