summaryrefslogtreecommitdiff
path: root/kernel/sched
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2018-01-09 15:40:38 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-01-09 15:40:38 -0800
commit20ab01289c7807a88a38f67e98ee683984aec1e1 (patch)
tree77c9054d3402295fc09e34cff844fdad0c4241ab /kernel/sched
parent335cf653471a1d8711265d359adbb779aff33f84 (diff)
parent24a7d0a6218e5d15f701f1c5cc833c707107fc6f (diff)
Merge "sched: core: Exclude isolated cpus in sched_getaffinity cpumask"
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/core.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index cec7fe8059a1..13a64488c3d2 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: