If exclusive_cpus is set, effective_xcpus must be a subset of
exclusive_cpus. Currently, rm_siblings_excl_cpus() checks both
exclusive_cpus and effective_xcpus connectively. It is simpler
to check only exclusive_cpus if non-empty or just effective_xcpus
otherwise.

No functional change is expected.

Signed-off-by: Waiman Long <[email protected]>
---
 kernel/cgroup/cpuset.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index 221da921b4f9..3d2d28f0fd03 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -1355,23 +1355,24 @@ static int rm_siblings_excl_cpus(struct cpuset *parent, 
struct cpuset *cs,
        int retval = 0;
 
        if (cpumask_empty(excpus))
-               return retval;
+               return 0;
 
        /*
         * Exclude exclusive CPUs from siblings
         */
        rcu_read_lock();
        cpuset_for_each_child(sibling, css, parent) {
+               struct cpumask *sibling_xcpus;
+
                if (sibling == cs)
                        continue;
 
-               if (cpumask_intersects(excpus, sibling->exclusive_cpus)) {
-                       cpumask_andnot(excpus, excpus, sibling->exclusive_cpus);
-                       retval++;
-                       continue;
-               }
-               if (cpumask_intersects(excpus, sibling->effective_xcpus)) {
-                       cpumask_andnot(excpus, excpus, 
sibling->effective_xcpus);
+               sibling_xcpus = cpumask_empty(sibling->exclusive_cpus)
+                             ? sibling->effective_xcpus
+                             : sibling->exclusive_cpus;
+
+               if (cpumask_intersects(excpus, sibling_xcpus)) {
+                       cpumask_andnot(excpus, excpus, sibling_xcpus);
                        retval++;
                }
        }
-- 
2.52.0


Reply via email to