x86: use kernel_stack_pointer() in process_32.c
authorH. Peter Anvin <hpa@zytor.com>
Mon, 12 Oct 2009 21:09:07 +0000 (14:09 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 12 Oct 2009 21:19:34 +0000 (14:19 -0700)
The way to obtain a kernel-mode stack pointer from a struct pt_regs in
32-bit mode is "subtle": the stack doesn't actually contain the stack
pointer, but rather the location where it would have been marks the
actual previous stack frame.  For clarity, use kernel_stack_pointer()
instead of coding this weirdness explicitly.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/kernel/process_32.c

index 4cf79567cdab0728b33c2f9698e3a5b535e4eb28..35e6fad73e0d07cfd08c7afadef3dfc5db860859 100644 (file)
@@ -134,7 +134,7 @@ void __show_regs(struct pt_regs *regs, int all)
                ss = regs->ss & 0xffff;
                gs = get_user_gs(regs);
        } else {
-               sp = (unsigned long) (&regs->sp);
+               sp = kernel_stack_pointer(regs);
                savesegment(ss, ss);
                savesegment(gs, gs);
        }