[CRIU] [PATCH] cr-dump: allocate dfds near the place where it's used

Andrey Vagin avagin at openvz.org
Mon Apr 7 12:32:32 PDT 2014


Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
 cr-dump.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/cr-dump.c b/cr-dump.c
index 464963d..d326cbf 100644
--- a/cr-dump.c
+++ b/cr-dump.c
@@ -1381,7 +1381,7 @@ static int dump_one_task(struct pstree_item *item)
 	int ret = -1;
 	struct parasite_dump_misc misc;
 	struct cr_fdset *cr_fdset = NULL;
-	struct parasite_drain_fd *dfds;
+	struct parasite_drain_fd *dfds = NULL;
 	struct proc_posix_timers_stat proc_args;
 	struct proc_status_creds cr;
 
@@ -1398,10 +1398,6 @@ static int dump_one_task(struct pstree_item *item)
 		 */
 		return 0;
 
-	dfds = xmalloc(sizeof(*dfds));
-	if (!dfds)
-		goto err_free;
-
 	pr_info("Obtaining task stat ... ");
 	ret = parse_pid_stat(pid, &pps_buf);
 	if (ret < 0)
@@ -1423,6 +1419,10 @@ static int dump_one_task(struct pstree_item *item)
 		goto err;
 	}
 
+	dfds = xmalloc(sizeof(*dfds));
+	if (!dfds)
+		goto err;
+
 	ret = collect_fds(pid, dfds);
 	if (ret) {
 		pr_err("Collect fds (pid: %d) failed with %d\n", pid, ret);
@@ -1578,7 +1578,6 @@ static int dump_one_task(struct pstree_item *item)
 	close_cr_fdset(&cr_fdset);
 err:
 	close_pid_proc();
-err_free:
 	free_mappings(&vmas);
 	xfree(dfds);
 	return ret;
-- 
1.8.5.3



More information about the CRIU mailing list