From: Al Viro Date: Thu, 18 Aug 2011 19:10:19 +0000 (+0100) Subject: um: increase stack growth cushion in pagefault X-Git-Tag: v3.2-rc1~87^2~28 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=c7ea591c91162a203a5961d69f5c86a6ef9d50c1 um: increase stack growth cushion in pagefault analog of [PATCH] i386: let usermode execute the "enter" instruction from circa 2006. Signed-off-by: Al Viro Signed-off-by: Richard Weinberger --- diff --git a/arch/x86/um/asm/processor.h b/arch/x86/um/asm/processor.h index d3ac1cecf0f4..f34c4b2d09f3 100644 --- a/arch/x86/um/asm/processor.h +++ b/arch/x86/um/asm/processor.h @@ -10,6 +10,9 @@ # include "processor_64.h" #endif +#define ARCH_IS_STACKGROW(address) \ + (address + 65536 + 32 * sizeof(unsigned long) >= UPT_SP(¤t->thread.regs.regs)) + #include #endif diff --git a/arch/x86/um/asm/processor_32.h b/arch/x86/um/asm/processor_32.h index ae0d189aafcf..e5b72faea0f6 100644 --- a/arch/x86/um/asm/processor_32.h +++ b/arch/x86/um/asm/processor_32.h @@ -63,9 +63,6 @@ static inline void rep_nop(void) #define current_text_addr() \ ({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; }) -#define ARCH_IS_STACKGROW(address) \ - (address + 32 >= UPT_SP(¤t->thread.regs.regs)) - #define KSTK_EIP(tsk) KSTK_REG(tsk, EIP) #define KSTK_ESP(tsk) KSTK_REG(tsk, UESP) #define KSTK_EBP(tsk) KSTK_REG(tsk, EBP) diff --git a/arch/x86/um/asm/processor_64.h b/arch/x86/um/asm/processor_64.h index 6db812b24f48..0186c61d0a7e 100644 --- a/arch/x86/um/asm/processor_64.h +++ b/arch/x86/um/asm/processor_64.h @@ -42,9 +42,6 @@ static inline void arch_copy_thread(struct arch_thread *from, #define current_text_addr() \ ({ void *pc; __asm__("movq $1f,%0\n1:":"=g" (pc)); pc; }) -#define ARCH_IS_STACKGROW(address) \ - (address + 128 >= UPT_SP(¤t->thread.regs.regs)) - #define KSTK_EIP(tsk) KSTK_REG(tsk, RIP) #define KSTK_ESP(tsk) KSTK_REG(tsk, RSP)