SKAS4 - Introduce STUB_ADDR
RFC PATCH 10/11 SKAS4 - Introduce STUB_ADDR
There were a number of repetitions of the calculation of an stub address in a process address space. This introduces STUB_ADDR to eliminate the common code.
arch/um/include/skas/skas.h +3 -0
@@ -10,6 +10,9 @@extern int have_siginfo_segv; +#define STUB_ADDR (x) (STUB_CODE + (unsigned long) (x) - \ + (unsigned long) &__syscall_stub_start) +extern int userspace_pid[];extern int proc_mm, ptrace_faultinfo, ptrace_ldt;extern int skas_needs_stub;
arch/um/os-Linux/skas/mem.c +1 -3
@@ -45,9 +45,7 @@ static int __init init_syscall_regs(void)get_safe_registers (syscall_regs); stub_entry = &batch_syscall_stub; - syscall_regs[REGS_IP_INDEX ] =STUB_CODE + - ((unsigned long ) stub_entry - - (unsigned long ) &__syscall_stub_start); + syscall_regs[REGS_IP_INDEX ] =STUB_ADDR (stub_entry);return 0 ; }
arch/um/os-Linux/skas/process.c +2 -7
@@ -229,10 +229,7 @@ static int userspace_tramp(void *stack) }if (!ptrace_faultinfo && (stack !=NULL )) {struct sigaction sa; - -unsigned long v =STUB_CODE + - (unsigned long ) stub_segv_handler - - (unsigned long ) &__syscall_stub_start; +unsigned long v =STUB_ADDR (stub_segv_handler);set_sigstack ((void *)STUB_DATA ,UM_KERN_PAGE_SIZE );sigemptyset (&sa.sa_mask);
@@ -400,9 +397,7 @@ static int __init init_thread_regs(void) {get_safe_registers (thread_regs);/* Set parent's instruction pointer to start of clone-stub */ - thread_regs[REGS_IP_INDEX ] =STUB_CODE + - (unsigned long ) stub_clone_handler - - (unsigned long ) &__syscall_stub_start; + thread_regs[REGS_IP_INDEX ] =STUB_ADDR (stub_clone_handler); thread_regs[REGS_SP_INDEX ] =STUB_DATA +UM_KERN_PAGE_SIZE -sizeof (void *);#ifdef __SIGNAL_FRAMESIZE
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel