diff --git a/cr-dump.c b/cr-dump.c index 258ba4b45..9313a7c21 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;