mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-01 06:45:35 +00:00
parasite: Remove unneeded on-stack variables
Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
This commit is contained in:
committed by
Cyrill Gorcunov
parent
250d4e9111
commit
2b1a58b3b4
@@ -46,12 +46,6 @@ enum {
|
|||||||
PARASITE_CMD_MAX,
|
PARASITE_CMD_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned long command;
|
|
||||||
unsigned long args_size;
|
|
||||||
void *args;
|
|
||||||
} parasite_args_t;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
long ret; /* custom ret code */
|
long ret; /* custom ret code */
|
||||||
long sys_ret; /* syscall ret code */
|
long sys_ret; /* syscall ret code */
|
||||||
|
@@ -190,31 +190,25 @@ static struct vma_area *get_vma_by_ip(struct list_head *vma_area_list, unsigned
|
|||||||
int parasite_execute(unsigned long cmd, struct parasite_ctl *ctl,
|
int parasite_execute(unsigned long cmd, struct parasite_ctl *ctl,
|
||||||
parasite_status_t *args, int args_size)
|
parasite_status_t *args, int args_size)
|
||||||
{
|
{
|
||||||
parasite_args_t parasite_arg = { };
|
|
||||||
user_regs_struct_t regs, regs_orig;
|
user_regs_struct_t regs, regs_orig;
|
||||||
int status, ret = -1;
|
int status, ret = -1;
|
||||||
siginfo_t siginfo;
|
siginfo_t siginfo;
|
||||||
|
|
||||||
jerr(ptrace(PTRACE_GETREGS, ctl->pid, NULL, ®s_orig), err);
|
jerr(ptrace(PTRACE_GETREGS, ctl->pid, NULL, ®s_orig), err);
|
||||||
|
|
||||||
parasite_arg.command = cmd;
|
|
||||||
parasite_arg.args_size = args_size;
|
|
||||||
parasite_arg.args = args;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pass the command first, it's immutable.
|
* Pass the command first, it's immutable.
|
||||||
*/
|
*/
|
||||||
jerr(ptrace_poke_area((long)ctl->pid, (void *)¶site_arg.command,
|
jerr(ptrace_poke_area((long)ctl->pid, (void *)&cmd, (void *)ctl->addr_cmd,
|
||||||
(void *)ctl->addr_cmd, sizeof(parasite_arg.command)),
|
sizeof(cmd)), err_restore);
|
||||||
err_restore);
|
|
||||||
|
|
||||||
again:
|
again:
|
||||||
regs = regs_orig;
|
regs = regs_orig;
|
||||||
regs.ip = ctl->parasite_ip;
|
regs.ip = ctl->parasite_ip;
|
||||||
jerr(ptrace(PTRACE_SETREGS, ctl->pid, NULL, ®s), err_restore);
|
jerr(ptrace(PTRACE_SETREGS, ctl->pid, NULL, ®s), err_restore);
|
||||||
|
|
||||||
if (ptrace_poke_area((long)ctl->pid, (void *)parasite_arg.args,
|
if (ptrace_poke_area((long)ctl->pid, (void *)args,
|
||||||
(void *)ctl->addr_args, parasite_arg.args_size)) {
|
(void *)ctl->addr_args, args_size)) {
|
||||||
pr_err("Can't setup parasite arguments (pid: %d)\n", ctl->pid);
|
pr_err("Can't setup parasite arguments (pid: %d)\n", ctl->pid);
|
||||||
goto err_restore;
|
goto err_restore;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user