/**
  * cgroup_migrate - migrate a process or task to a cgroup
- * @cgrp: the destination cgroup
  * @leader: the leader of the process or the task to migrate
  * @threadgroup: whether @leader points to the whole process or a single task
+ * @cgrp: the destination cgroup
  *
  * Migrate a process or task denoted by @leader to @cgrp.  If migrating a
  * process, the caller must be holding cgroup_threadgroup_rwsem.  The
  * decided for all targets by invoking group_migrate_prepare_dst() before
  * actually starting migrating.
  */
-static int cgroup_migrate(struct cgroup *cgrp, struct task_struct *leader,
-                         bool threadgroup)
+static int cgroup_migrate(struct task_struct *leader, bool threadgroup,
+                         struct cgroup *cgrp)
 {
        struct cgroup_taskset tset = {
                .src_csets      = LIST_HEAD_INIT(tset.src_csets),
        /* prepare dst csets and commit */
        ret = cgroup_migrate_prepare_dst(dst_cgrp, &preloaded_csets);
        if (!ret)
-               ret = cgroup_migrate(dst_cgrp, leader, threadgroup);
+               ret = cgroup_migrate(leader, threadgroup, dst_cgrp);
 
        cgroup_migrate_finish(&preloaded_csets);
        return ret;
                                goto out_finish;
                        last_task = task;
 
-                       ret = cgroup_migrate(src_cset->dfl_cgrp, task, true);
+                       ret = cgroup_migrate(task, true, src_cset->dfl_cgrp);
 
                        put_task_struct(task);
 
                css_task_iter_end(&it);
 
                if (task) {
-                       ret = cgroup_migrate(to, task, false);
+                       ret = cgroup_migrate(task, false, to);
                        put_task_struct(task);
                }
        } while (task && !ret);