Commit 2b1a58b3 authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by Cyrill Gorcunov

parasite: Remove unneeded on-stack variables

Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent 250d4e91
...@@ -46,12 +46,6 @@ enum { ...@@ -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 ...@@ -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, &regs_orig), err); jerr(ptrace(PTRACE_GETREGS, ctl->pid, NULL, &regs_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 *)&parasite_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, &regs), err_restore); jerr(ptrace(PTRACE_SETREGS, ctl->pid, NULL, &regs), 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;
} }
......
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