Messages in this thread Patch in this message | | | From | Mitsuo Hayasaka <> | Subject | [RFC PATCH 1/5] x86: add user_mode_vm check in stack_overflow_check | Date | Mon, 07 Nov 2011 14:52:35 +0900 |
| |
The kernel stack overflow is checked in stack_overflow_check(), which may wrongly detect the overflow if the stack pointer pointed to the kernel stack accidentally.
This patch adds user-mode-vm checking before it to avoid this misdetection and bails out early if the user stack is used.
Signed-off-by: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> ---
arch/x86/kernel/irq_64.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c index acf8fbf..69bca46 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c @@ -38,6 +38,9 @@ static inline void stack_overflow_check(struct pt_regs *regs) #ifdef CONFIG_DEBUG_STACKOVERFLOW u64 curbase = (u64)task_stack_page(current); + if (user_mode_vm(regs)) + return; + WARN_ONCE(regs->sp >= curbase && regs->sp <= curbase + THREAD_SIZE && regs->sp < curbase + sizeof(struct thread_info) +
| |