Commit 46270d11 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

pie: Use PIE_SIZE helper

Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 2f16ec33
...@@ -2366,11 +2366,7 @@ static int prepare_restorer_blob(void) ...@@ -2366,11 +2366,7 @@ static int prepare_restorer_blob(void)
* in turn will lead to set-exe-file prctl to fail with EBUSY. * in turn will lead to set-exe-file prctl to fail with EBUSY.
*/ */
#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64) restorer_len = PIE_SIZE(restorer_blob);
restorer_len = round_up(sizeof(restorer_blob) + nr_gotpcrel * sizeof(long), PAGE_SIZE);
#else
restorer_len = round_up(sizeof(restorer_blob), PAGE_SIZE);
#endif
restorer = mmap(NULL, restorer_len, restorer = mmap(NULL, restorer_len,
PROT_READ | PROT_WRITE | PROT_EXEC, PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_PRIVATE | MAP_ANON, 0, 0); MAP_PRIVATE | MAP_ANON, 0, 0);
......
...@@ -39,12 +39,6 @@ ...@@ -39,12 +39,6 @@
#include "asm/restorer.h" #include "asm/restorer.h"
#include "pie/pie-relocs.h" #include "pie/pie-relocs.h"
#if defined(CONFIG_X86_32) || defined(CONFIG_X86_64)
# define parasite_size (round_up(sizeof(parasite_blob) + nr_gotpcrel * sizeof(long), PAGE_SIZE))
#else
# define parasite_size (round_up(sizeof(parasite_blob), PAGE_SIZE))
#endif
static int can_run_syscall(unsigned long ip, unsigned long start, unsigned long end) static int can_run_syscall(unsigned long ip, unsigned long start, unsigned long end)
{ {
return ip >= start && ip < (end - code_syscall_size); return ip >= start && ip < (end - code_syscall_size);
...@@ -1210,7 +1204,7 @@ struct parasite_ctl *parasite_infect_seized(pid_t pid, struct pstree_item *item, ...@@ -1210,7 +1204,7 @@ struct parasite_ctl *parasite_infect_seized(pid_t pid, struct pstree_item *item,
ctl->args_size = round_up(parasite_args_size, PAGE_SIZE); ctl->args_size = round_up(parasite_args_size, PAGE_SIZE);
parasite_args_size = PARASITE_ARG_SIZE_MIN; /* reset for next task */ parasite_args_size = PARASITE_ARG_SIZE_MIN; /* reset for next task */
map_exchange_size = parasite_size + ctl->args_size; map_exchange_size = PIE_SIZE(parasite_blob) + ctl->args_size;
map_exchange_size += RESTORE_STACK_SIGFRAME + PARASITE_STACK_SIZE; map_exchange_size += RESTORE_STACK_SIGFRAME + PARASITE_STACK_SIZE;
if (item->nr_threads > 1) if (item->nr_threads > 1)
map_exchange_size += PARASITE_STACK_SIZE; map_exchange_size += PARASITE_STACK_SIZE;
...@@ -1232,7 +1226,7 @@ struct parasite_ctl *parasite_infect_seized(pid_t pid, struct pstree_item *item, ...@@ -1232,7 +1226,7 @@ struct parasite_ctl *parasite_infect_seized(pid_t pid, struct pstree_item *item,
ctl->addr_cmd = parasite_sym(ctl->local_map, __export_parasite_cmd); ctl->addr_cmd = parasite_sym(ctl->local_map, __export_parasite_cmd);
ctl->addr_args = parasite_sym(ctl->local_map, __export_parasite_args); ctl->addr_args = parasite_sym(ctl->local_map, __export_parasite_args);
p = parasite_size + ctl->args_size; p = PIE_SIZE(parasite_blob) + ctl->args_size;
ctl->rsigframe = ctl->remote_map + p; ctl->rsigframe = ctl->remote_map + p;
ctl->sigframe = ctl->local_map + p; ctl->sigframe = ctl->local_map + p;
......
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