Commit 0dc835ac authored by Pavel Emelyanov's avatar Pavel Emelyanov

dump: Move signals dumping into a helper

... fixing erroneous goto on error path :)
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent cd0075ab
...@@ -1192,6 +1192,26 @@ static int dump_thread_signals(struct pid *tid) ...@@ -1192,6 +1192,26 @@ static int dump_thread_signals(struct pid *tid)
return ret; return ret;
} }
static int dump_task_signals(pid_t pid, struct pstree_item *item,
struct cr_fdset *cr_fdset)
{
int i, ret;
ret = dump_signal_queue(pid, fdset_fd(cr_fdset, CR_FD_SIGNAL), true);
if (ret) {
pr_err("Can't dump pending signals (pid: %d)\n", pid);
return -1;
}
for (i = 0; i < item->nr_threads; i++) {
ret = dump_thread_signals(&item->threads[i]);
if (ret)
return -1;
}
return 0;
}
static struct proc_pid_stat pps_buf; static struct proc_pid_stat pps_buf;
static int dump_task_threads(struct parasite_ctl *parasite_ctl, static int dump_task_threads(struct parasite_ctl *parasite_ctl,
...@@ -1361,7 +1381,7 @@ static int dump_one_task(struct pstree_item *item) ...@@ -1361,7 +1381,7 @@ static int dump_one_task(struct pstree_item *item)
pid_t pid = item->pid.real; pid_t pid = item->pid.real;
struct vm_area_list vmas; struct vm_area_list vmas;
struct parasite_ctl *parasite_ctl; struct parasite_ctl *parasite_ctl;
int i, ret = -1; int ret = -1;
struct parasite_dump_misc misc; struct parasite_dump_misc misc;
struct cr_fdset *cr_fdset = NULL; struct cr_fdset *cr_fdset = NULL;
struct parasite_drain_fd *dfds; struct parasite_drain_fd *dfds;
...@@ -1545,15 +1565,9 @@ static int dump_one_task(struct pstree_item *item) ...@@ -1545,15 +1565,9 @@ static int dump_one_task(struct pstree_item *item)
goto err; goto err;
} }
ret = dump_signal_queue(pid, fdset_fd(cr_fdset, CR_FD_SIGNAL), true); ret = dump_task_signals(pid, item, cr_fdset);
if (ret) { if (ret) {
pr_err("Can't dump pending signals (pid: %d)\n", pid); pr_err("Dump %d signals failed %d\n", pid, ret);
goto err_cure;
}
for (i = 0; i < item->nr_threads; i++) {
ret = dump_thread_signals(&item->threads[i]);
if (ret)
goto err; 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