Commit 30f0acb4 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

parasite: fix size of cmd

cmd is declarated in parasite-head-x86-64.S
__export_parasite_cmd:
        .long 0

Its size is 4 bytes, so it should be int instead of long.

This patch fixes a bug in parasite execute,
where a part of args are overwritten by cmd.

memcpy(ctl->addr_cmd, &cmd, sizeof(cmd));
Reported-by: 's avatarStanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Acked-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 79d00c29
...@@ -221,7 +221,7 @@ err: ...@@ -221,7 +221,7 @@ err:
return ret; return ret;
} }
static int parasite_execute_by_pid(unsigned long cmd, struct parasite_ctl *ctl, static int parasite_execute_by_pid(unsigned int cmd, struct parasite_ctl *ctl,
pid_t pid, pid_t pid,
void *args, int args_size) void *args, int args_size)
{ {
...@@ -265,7 +265,7 @@ static int parasite_execute_by_pid(unsigned long cmd, struct parasite_ctl *ctl, ...@@ -265,7 +265,7 @@ static int parasite_execute_by_pid(unsigned long cmd, struct parasite_ctl *ctl,
return ret; return ret;
} }
static int parasite_execute(unsigned long cmd, struct parasite_ctl *ctl, static int parasite_execute(unsigned int cmd, struct parasite_ctl *ctl,
void *args, int args_size) void *args, int args_size)
{ {
return parasite_execute_by_pid(cmd, ctl, ctl->pid, args, args_size); return parasite_execute_by_pid(cmd, ctl, ctl->pid, args, args_size);
......
...@@ -452,7 +452,7 @@ static int fini(void) ...@@ -452,7 +452,7 @@ static int fini(void)
return 0; return 0;
} }
int __used parasite_service(unsigned long cmd, void *args) int __used parasite_service(unsigned int cmd, void *args)
{ {
BUILD_BUG_ON(sizeof(struct parasite_dump_pages_args) > PARASITE_ARG_SIZE); BUILD_BUG_ON(sizeof(struct parasite_dump_pages_args) > PARASITE_ARG_SIZE);
BUILD_BUG_ON(sizeof(struct parasite_init_args) > PARASITE_ARG_SIZE); BUILD_BUG_ON(sizeof(struct parasite_init_args) > PARASITE_ARG_SIZE);
......
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