OSDN Git Service

cgroup/cpuset: Relocate a code block in validate_change()
authorWaiman Long <longman@redhat.com>
Thu, 1 Sep 2022 20:57:42 +0000 (16:57 -0400)
committerTejun Heo <tj@kernel.org>
Sun, 4 Sep 2022 20:47:28 +0000 (10:47 -1000)
This patch moves down the exclusive cpu and memory check in
validate_change(). There is no functional change.

Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup/cpuset.c

index 15fcd2f..b0d921d 100644 (file)
@@ -742,22 +742,6 @@ static int validate_change(struct cpuset *cur, struct cpuset *trial)
        par = parent_cs(cur);
 
        /*
-        * If either I or some sibling (!= me) is exclusive, we can't
-        * overlap
-        */
-       ret = -EINVAL;
-       cpuset_for_each_child(c, css, par) {
-               if ((is_cpu_exclusive(trial) || is_cpu_exclusive(c)) &&
-                   c != cur &&
-                   cpumask_intersects(trial->cpus_allowed, c->cpus_allowed))
-                       goto out;
-               if ((is_mem_exclusive(trial) || is_mem_exclusive(c)) &&
-                   c != cur &&
-                   nodes_intersects(trial->mems_allowed, c->mems_allowed))
-                       goto out;
-       }
-
-       /*
         * Cpusets with tasks - existing or newly being attached - can't
         * be changed to have empty cpus_allowed or mems_allowed.
         */
@@ -781,6 +765,22 @@ static int validate_change(struct cpuset *cur, struct cpuset *trial)
                                       trial->cpus_allowed))
                goto out;
 
+       /*
+        * If either I or some sibling (!= me) is exclusive, we can't
+        * overlap
+        */
+       ret = -EINVAL;
+       cpuset_for_each_child(c, css, par) {
+               if ((is_cpu_exclusive(trial) || is_cpu_exclusive(c)) &&
+                   c != cur &&
+                   cpumask_intersects(trial->cpus_allowed, c->cpus_allowed))
+                       goto out;
+               if ((is_mem_exclusive(trial) || is_mem_exclusive(c)) &&
+                   c != cur &&
+                   nodes_intersects(trial->mems_allowed, c->mems_allowed))
+                       goto out;
+       }
+
        ret = 0;
 out:
        rcu_read_unlock();