Commit 1d19f488 authored by Pavel Emelyanov's avatar Pavel Emelyanov

parasite: Use parasite_ctl as the argument to arch_can_dump_task

The pid is set on ctl and in the next patch I'll use one
more field.

travis-ci: success for Don't get task regs twice
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
Reviewed-by: 's avatarDmitry Safonov <dsafonov@virtuozzo.com>
parent bba96e83
...@@ -42,7 +42,7 @@ void parasite_setup_regs(unsigned long new_ip, void *stack, user_regs_struct_t * ...@@ -42,7 +42,7 @@ void parasite_setup_regs(unsigned long new_ip, void *stack, user_regs_struct_t *
regs->sp = (unsigned long)stack; regs->sp = (unsigned long)stack;
} }
bool arch_can_dump_task(pid_t pid) bool arch_can_dump_task(struct parasite_ctl *ctl)
{ {
/* /*
* TODO: Add proper check here * TODO: Add proper check here
......
...@@ -46,7 +46,7 @@ void parasite_setup_regs(unsigned long new_ip, void *stack, user_regs_struct_t * ...@@ -46,7 +46,7 @@ void parasite_setup_regs(unsigned long new_ip, void *stack, user_regs_struct_t *
regs->ARM_cpsr &= PSR_f | PSR_s | PSR_x | MODE32_BIT; regs->ARM_cpsr &= PSR_f | PSR_s | PSR_x | MODE32_BIT;
} }
bool arch_can_dump_task(pid_t pid) bool arch_can_dump_task(struct parasite_ctl *ctl)
{ {
/* /*
* TODO: Add proper check here * TODO: Add proper check here
......
...@@ -66,7 +66,7 @@ void parasite_setup_regs(unsigned long new_ip, void *stack, user_regs_struct_t * ...@@ -66,7 +66,7 @@ void parasite_setup_regs(unsigned long new_ip, void *stack, user_regs_struct_t *
regs->trap = 0; regs->trap = 0;
} }
bool arch_can_dump_task(pid_t pid) bool arch_can_dump_task(struct parasite_ctl *ctl)
{ {
/* /*
* TODO: We should detect 32bit task when BE support is done. * TODO: We should detect 32bit task when BE support is done.
......
...@@ -75,8 +75,10 @@ static int task_in_compat_mode(pid_t pid) ...@@ -75,8 +75,10 @@ static int task_in_compat_mode(pid_t pid)
return cs != 0x33 || ds == 0x2b; return cs != 0x33 || ds == 0x2b;
} }
bool arch_can_dump_task(pid_t pid) bool arch_can_dump_task(struct parasite_ctl *ctl)
{ {
pid_t pid = ctl->rpid;
if (task_in_compat_mode(pid)) { if (task_in_compat_mode(pid)) {
pr_err("Can't dump task %d running in 32-bit mode\n", pid); pr_err("Can't dump task %d running in 32-bit mode\n", pid);
return false; return false;
......
...@@ -117,7 +117,7 @@ extern int syscall_seized(struct parasite_ctl *ctl, int nr, unsigned long *ret, ...@@ -117,7 +117,7 @@ extern int syscall_seized(struct parasite_ctl *ctl, int nr, unsigned long *ret,
extern int __parasite_execute_syscall(struct parasite_ctl *ctl, extern int __parasite_execute_syscall(struct parasite_ctl *ctl,
user_regs_struct_t *regs, const char *code_syscall); user_regs_struct_t *regs, const char *code_syscall);
extern bool arch_can_dump_task(pid_t pid); extern bool arch_can_dump_task(struct parasite_ctl *ctl);
/* /*
* The PTRACE_SYSCALL will trap task twice -- on * The PTRACE_SYSCALL will trap task twice -- on
......
...@@ -1365,7 +1365,7 @@ struct parasite_ctl *parasite_infect_seized(pid_t pid, struct pstree_item *item, ...@@ -1365,7 +1365,7 @@ struct parasite_ctl *parasite_infect_seized(pid_t pid, struct pstree_item *item,
parasite_ensure_args_size(dump_pages_args_size(vma_area_list)); parasite_ensure_args_size(dump_pages_args_size(vma_area_list));
parasite_ensure_args_size(aio_rings_args_size(vma_area_list)); parasite_ensure_args_size(aio_rings_args_size(vma_area_list));
if (!arch_can_dump_task(pid)) if (!arch_can_dump_task(ctl))
goto err_restore; goto err_restore;
/* /*
* Inject a parasite engine. Ie allocate memory inside alien * Inject a parasite engine. Ie allocate memory inside alien
......
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