diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 3d7e0c8e99250ca318b83a891921bcb033106ad8..2185377fdde118424aaa36b3b3d8c36498373161 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c @@ -771,7 +771,7 @@ unsigned long get_wchan(struct task_struct *p) int count = 0; if (!p || p == current || p->state == TASK_RUNNING) return 0; - stack_page = (unsigned long)p->thread_info; + stack_page = (unsigned long)task_stack_page(p); esp = p->thread.esp; if (!stack_page || esp < stack_page || esp > top_esp+stack_page) return 0; diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h index 29ad87e9123f14ab66b1f8b5a04dd7a8c4f31b64..feca5d961e2b0c26a20c89f2b67c1cac230866fc 100644 --- a/include/asm-i386/processor.h +++ b/include/asm-i386/processor.h @@ -574,7 +574,7 @@ unsigned long get_wchan(struct task_struct *p); #define task_pt_regs(task) \ ({ \ struct pt_regs *__regs__; \ - __regs__ = (struct pt_regs *)(KSTK_TOP((task)->thread_info)-8); \ + __regs__ = (struct pt_regs *)(KSTK_TOP(task_stack_page(task))-8); \ __regs__ - 1; \ })