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

crtools: Sanitize parasite_ctl pass to parasite_cure_seized

Remove excessive checks and keep it a pointer.
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent a49e3072
...@@ -1130,7 +1130,7 @@ static int dump_one_task(pid_t pid, struct cr_fdset *cr_fdset) ...@@ -1130,7 +1130,7 @@ static int dump_one_task(pid_t pid, struct cr_fdset *cr_fdset)
goto err; goto err;
} }
ret = parasite_cure_seized(&parasite_ctl, &vma_area_list); ret = parasite_cure_seized(parasite_ctl, &vma_area_list);
if (ret) { if (ret) {
pr_err("Can't cure (pid: %d) from parasite\n", pid); pr_err("Can't cure (pid: %d) from parasite\n", pid);
goto err; goto err;
......
...@@ -41,6 +41,6 @@ extern int parasite_dump_pages_seized(struct parasite_ctl *ctl, struct list_head ...@@ -41,6 +41,6 @@ extern int parasite_dump_pages_seized(struct parasite_ctl *ctl, struct list_head
extern int parasite_dump_sigacts_seized(struct parasite_ctl *ctl, struct cr_fdset *cr_fdset); extern int parasite_dump_sigacts_seized(struct parasite_ctl *ctl, struct cr_fdset *cr_fdset);
extern struct parasite_ctl *parasite_infect_seized(pid_t pid, struct list_head *vma_area_list); extern struct parasite_ctl *parasite_infect_seized(pid_t pid, struct list_head *vma_area_list);
extern int parasite_cure_seized(struct parasite_ctl **p_ctrl, struct list_head *vma_area_list); extern int parasite_cure_seized(struct parasite_ctl *ctl, struct list_head *vma_area_list);
#endif /* PARASITE_SYSCALL_H_ */ #endif /* PARASITE_SYSCALL_H_ */
...@@ -501,19 +501,12 @@ out: ...@@ -501,19 +501,12 @@ out:
return ret; return ret;
} }
int parasite_cure_seized(struct parasite_ctl **p_ctl, int parasite_cure_seized(struct parasite_ctl *ctl, struct list_head *vma_area_list)
struct list_head *vma_area_list)
{ {
user_regs_struct_t regs, regs_orig; user_regs_struct_t regs, regs_orig;
struct parasite_ctl *ctl;
struct vma_area *vma_area; struct vma_area *vma_area;
int ret = -1; int ret = -1;
if (!p_ctl || !*p_ctl)
return 0;
ctl = *p_ctl;
jerr(ptrace(PTRACE_GETREGS, ctl->pid, NULL, &regs), err); jerr(ptrace(PTRACE_GETREGS, ctl->pid, NULL, &regs), err);
regs_orig = regs; regs_orig = regs;
...@@ -537,7 +530,7 @@ int parasite_cure_seized(struct parasite_ctl **p_ctl, ...@@ -537,7 +530,7 @@ int parasite_cure_seized(struct parasite_ctl **p_ctl,
pr_panic("PTRACE_SETREGS failed (pid: %d)\n", ctl->pid); pr_panic("PTRACE_SETREGS failed (pid: %d)\n", ctl->pid);
} }
free(*p_ctl), *p_ctl = NULL; free(ctl);
err: err:
return ret; return ret;
} }
......
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