]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
timers/migration: Convert "while" loops to use "for"
authorFrederic Weisbecker <frederic@kernel.org>
Fri, 24 Oct 2025 13:25:31 +0000 (15:25 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Sat, 1 Nov 2025 19:38:24 +0000 (20:38 +0100)
Both the "do while" and "while" loops in tmigr_setup_groups() eventually
mimic the behaviour of "for" loops.

Simplify accordingly.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://patch.msgid.link/20251024132536.39841-2-frederic@kernel.org
kernel/time/timer_migration.c

index c0c54dc5314c3f920c8b5c10cd196f52ee313d0e..1e371f1fdc86cf6ab7c068c37485e5b83e533309 100644 (file)
@@ -1642,22 +1642,23 @@ static void tmigr_connect_child_parent(struct tmigr_group *child,
 static int tmigr_setup_groups(unsigned int cpu, unsigned int node)
 {
        struct tmigr_group *group, *child, **stack;
-       int top = 0, err = 0, i = 0;
+       int i, top = 0, err = 0;
        struct list_head *lvllist;
 
        stack = kcalloc(tmigr_hierarchy_levels, sizeof(*stack), GFP_KERNEL);
        if (!stack)
                return -ENOMEM;
 
-       do {
+       for (i = 0; i < tmigr_hierarchy_levels; i++) {
                group = tmigr_get_group(cpu, node, i);
                if (IS_ERR(group)) {
                        err = PTR_ERR(group);
+                       i--;
                        break;
                }
 
                top = i;
-               stack[i++] = group;
+               stack[i] = group;
 
                /*
                 * When booting only less CPUs of a system than CPUs are
@@ -1667,16 +1668,18 @@ static int tmigr_setup_groups(unsigned int cpu, unsigned int node)
                 * be different from tmigr_hierarchy_levels, contains only a
                 * single group.
                 */
-               if (group->parent || list_is_singular(&tmigr_level_list[i - 1]))
+               if (group->parent || list_is_singular(&tmigr_level_list[i]))
                        break;
+       }
 
-       } while (i < tmigr_hierarchy_levels);
-
-       /* Assert single root */
-       WARN_ON_ONCE(!err && !group->parent && !list_is_singular(&tmigr_level_list[top]));
+       /* Assert single root without parent */
+       if (WARN_ON_ONCE(i >= tmigr_hierarchy_levels))
+               return -EINVAL;
+       if (WARN_ON_ONCE(!err && !group->parent && !list_is_singular(&tmigr_level_list[top])))
+               return -EINVAL;
 
-       while (i > 0) {
-               group = stack[--i];
+       for (; i >= 0; i--) {
+               group = stack[i];
 
                if (err < 0) {
                        list_del(&group->list);