Commit 9752c11d authored by gbellack's avatar gbellack Committed by Pavel Emelyanov

Quick bug fix for missing fd for move_in_cgroup

There is an issue where if the proccess to be killed spawns a child proccess and
moves it in a child cgroup of the one the parent process is in, the cgroup fd
was being closed in the parent process before it forked the child. Then when
move_in_cgroup() is called for the child process, the file descriptor has
already been closed causing a failure for the second call to move_in_cgroup().
Moved the fd close after the fork call.

Change-Id: I6ae88b95c5410a7f56108e28eb3133f113e868d0
Signed-off-by: 's avatarGarrison Bellack <gbellack@google.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 7a203afe
......@@ -619,7 +619,6 @@ static int move_in_cgroup(CgSetEntry *se)
}
}
close_service_fd(CGROUP_YARD);
return 0;
}
......
......@@ -1388,6 +1388,14 @@ static int restore_task_with_children(void *_arg)
if (create_children_and_session())
goto err;
/*
* This must be done after forking to allow child
* to get the cgroup fd so it can move into the
* correct /tasks file if it is in a different cgroup
* set than its parent
*/
close_service_fd(CGROUP_YARD);
if (restore_task_mnt_ns(current))
goto err;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment