x86_32: Return actual stack when requesting sp from regs
[profile/ivi/kernel-adaptation-intel-automotive.git] / arch / x86 / include / asm / ptrace.h
index dcfde52..2233713 100644 (file)
@@ -246,6 +246,15 @@ static inline unsigned long regs_get_register(struct pt_regs *regs,
 {
        if (unlikely(offset > MAX_REG_OFFSET))
                return 0;
+#ifdef CONFIG_X86_32
+       /*
+        * Traps from the kernel do not save sp and ss.
+        * Use the helper function to retrieve sp.
+        */
+       if (offset == offsetof(struct pt_regs, sp) &&
+           regs->cs == __KERNEL_CS)
+               return kernel_stack_pointer(regs);
+#endif
        return *(unsigned long *)((unsigned long)regs + offset);
 }