sparc64: Use kstack_valid() in die_if_kernel().

Previous thread: smc91c92_cs: define multicast_table as unsigned char by Linux Kernel Mailing List on Tuesday, April 13, 2010 - 12:59 pm. (1 message)

Next thread: sparc64: Kill CONFIG_STACK_DEBUG code. by Linux Kernel Mailing List on Tuesday, April 13, 2010 - 12:59 pm. (1 message)
From: Linux Kernel Mailing List
Date: Tuesday, April 13, 2010 - 12:59 pm

Gitweb:     http://git.kernel.org/linus/cb256aa60409efd803806cfb0528a4b3f8397dba
Commit:     cb256aa60409efd803806cfb0528a4b3f8397dba
Parent:     bdd32ce95f79fb5cc964cd789d7ae4500bba7c6f
Author:     David S. Miller <davem@davemloft.net>
AuthorDate: Mon Apr 12 22:16:22 2010 -0700
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Mon Apr 12 22:16:22 2010 -0700

    sparc64: Use kstack_valid() in die_if_kernel().
    
    This gets rid of a local function (is_kernel_stack()) which tries to
    do the same thing, yet poorly in that it doesn't handle IRQ stacks
    properly.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 arch/sparc/kernel/traps_64.c |   26 +++-----------------------
 1 files changed, 3 insertions(+), 23 deletions(-)

diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c
index bdc05a2..2ff178c 100644
--- a/arch/sparc/kernel/traps_64.c
+++ b/arch/sparc/kernel/traps_64.c
@@ -2202,27 +2202,6 @@ void dump_stack(void)
 
 EXPORT_SYMBOL(dump_stack);
 
-static inline int is_kernel_stack(struct task_struct *task,
-				  struct reg_window *rw)
-{
-	unsigned long rw_addr = (unsigned long) rw;
-	unsigned long thread_base, thread_end;
-
-	if (rw_addr < PAGE_OFFSET) {
-		if (task != &init_task)
-			return 0;
-	}
-
-	thread_base = (unsigned long) task_stack_page(task);
-	thread_end = thread_base + sizeof(union thread_union);
-	if (rw_addr >= thread_base &&
-	    rw_addr < thread_end &&
-	    !(rw_addr & 0x7UL))
-		return 1;
-
-	return 0;
-}
-
 static inline struct reg_window *kernel_stack_up(struct reg_window *rw)
 {
 	unsigned long fp = rw->ins[6];
@@ -2251,6 +2230,7 @@ void die_if_kernel(char *str, struct pt_regs *regs)
 	show_regs(regs);
 	add_taint(TAINT_DIE);
 	if (regs->tstate & TSTATE_PRIV) {
+		struct thread_info *tp = current_thread_info();
 		struct reg_window *rw = (struct reg_window *)
 			(regs->u_regs[UREG_FP] + STACK_BIAS);
 
@@ -2258,8 +2238,8 @@ void die_if_kernel(char *str, struct ...
Previous thread: smc91c92_cs: define multicast_table as unsigned char by Linux Kernel Mailing List on Tuesday, April 13, 2010 - 12:59 pm. (1 message)

Next thread: sparc64: Kill CONFIG_STACK_DEBUG code. by Linux Kernel Mailing List on Tuesday, April 13, 2010 - 12:59 pm. (1 message)