From 24a7d0a6218e5d15f701f1c5cc833c707107fc6f Mon Sep 17 00:00:00 2001 From: Lingutla Chandrasekhar Date: Fri, 22 Dec 2017 17:22:25 +0530 Subject: sched: core: Exclude isolated cpus in sched_getaffinity cpumask User space tasks will have the same semantics for hotplug and isolation. Currently the sched_getaffinity() include isolated CPU on which user space tasks are forbidden to run. So fix this by excluding isolated cpus while returning cpu mask for user space tasks in sched_getaffinity(). Change-Id: Ib6a8ca864754f73bbaf809c3ceaef5f91d567ca9 Signed-off-by: Lingutla Chandrasekhar --- kernel/sched/core.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'kernel/sched') diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 1d91c012b5d8..1ae859dffba4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4914,6 +4914,15 @@ long sched_getaffinity(pid_t pid, struct cpumask *mask) raw_spin_lock_irqsave(&p->pi_lock, flags); cpumask_and(mask, &p->cpus_allowed, cpu_active_mask); + + /* + * The userspace tasks are forbidden to run on + * isolated CPUs. So exclude isolated CPUs from + * the getaffinity. + */ + if (!(p->flags & PF_KTHREAD)) + cpumask_andnot(mask, mask, cpu_isolated_mask); + raw_spin_unlock_irqrestore(&p->pi_lock, flags); out_unlock: -- cgit v1.2.3