From 6e4d05853d75d4e8a5cb41381eeb266ba62249e6 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Mon, 20 Feb 2017 11:33:42 +0300 Subject: compel: infect -- Don't forget to fetch sas early When infecting victim we construct sigframe to be able to self-rectore it in case if something goes wrong. But in case is a targer been using alternative stack for signal handling it will be missed in sigframe since we don't fetch it. Thus add fetching sas on infection stage and put it into signal frame early. Signed-off-by: Cyrill Gorcunov Signed-off-by: Andrei Vagin --- compel/arch/aarch64/src/lib/infect.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'compel/arch/aarch64') diff --git a/compel/arch/aarch64/src/lib/infect.c b/compel/arch/aarch64/src/lib/infect.c index 41600e091..166ec2363 100644 --- a/compel/arch/aarch64/src/lib/infect.c +++ b/compel/arch/aarch64/src/lib/infect.c @@ -140,6 +140,17 @@ bool arch_can_dump_task(struct parasite_ctl *ctl) return true; } +int arch_fetch_sas(struct parasite_ctl *ctl, struct rt_sigframe *s) +{ + long ret; + int err; + + err = compel_syscall(ctl, __NR_sigaltstack, + &ret, 0, (unsigned long)&s->uc.uc_stack, + 0, 0, 0, 0); + return err ? err : ret; +} + /* * Range for task size calculated from the following Linux kernel files: * arch/arm64/include/asm/memory.h -- cgit v1.2.3