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:
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,
void *args, int args_size)
{
......@@ -265,7 +265,7 @@ static int parasite_execute_by_pid(unsigned long cmd, struct parasite_ctl *ctl,
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)
{
return parasite_execute_by_pid(cmd, ctl, ctl->pid, args, args_size);
......
......@@ -452,7 +452,7 @@ static int fini(void)
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_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