diff options
Diffstat (limited to 'arch/x86/include/asm/ptrace.h')
| -rw-r--r-- | arch/x86/include/asm/ptrace.h | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h index e304b66abee..624f133943e 100644 --- a/arch/x86/include/asm/ptrace.h +++ b/arch/x86/include/asm/ptrace.h @@ -187,14 +187,15 @@ static inline int v8086_mode(struct pt_regs *regs)  /*   * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode - * when it traps.  So regs will be the current sp. + * when it traps.  The previous stack will be directly underneath the saved + * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'.   *   * This is valid only for kernel mode traps.   */ -static inline unsigned long kernel_trap_sp(struct pt_regs *regs) +static inline unsigned long kernel_stack_pointer(struct pt_regs *regs)  {  #ifdef CONFIG_X86_32 -	return (unsigned long)regs; +	return (unsigned long)(®s->sp);  #else  	return regs->sp;  #endif  |