Commit ef4dbebe authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

criu: seize -- Don't left dangling @processes_to_wait_pids pointer

If an error occured during freezer_wait_processes we are
freeing processes_to_wait_pids array but same time
take freezer_detach on error path to execute, which
lead in nil dereference in best case.

Simply zap dangling pointer and make sure it exist
in freezer_detach.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 2d938397
......@@ -203,6 +203,7 @@ static int freezer_wait_processes()
if (pid < 0) {
pr_perror("Unable to wait processes");
xfree(processes_to_wait_pids);
processes_to_wait_pids = NULL;
return -1;
}
pr_warn("Unexpected process %d in the freezer cgroup (status 0x%x)\n", pid, status);
......@@ -220,7 +221,7 @@ static int freezer_detach(void)
if (!opts.freeze_cgroup)
return 0;
for (i = 0; i < processes_to_wait; i++) {
for (i = 0; i < processes_to_wait && processes_to_wait_pids; i++) {
pid_t pid = processes_to_wait_pids[i];
int status, save_errno;
......
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