From: Paul Mundt Date: Fri, 8 Dec 2006 08:46:29 +0000 (+0900) Subject: sh: Fix get_wchan(). X-Git-Tag: v2.6.20-rc1~146^2~4^2~10 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b652c23cb0f7808bedb5442c416d91705a465c67;p=linux-2.6 sh: Fix get_wchan(). Some time ago the schedule frame size changed and we failed to reflect this in get_wchan() at the time. This first popped up as a problem on SH7751R where schedule_frame ended up being unaligned and generating an unaligned trap. This fixes it up again.. Signed-off-by: Paul Mundt --- diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c index 7347f6afa0..486c06e180 100644 --- a/arch/sh/kernel/process.c +++ b/arch/sh/kernel/process.c @@ -470,9 +470,10 @@ unsigned long get_wchan(struct task_struct *p) */ pc = thread_saved_pc(p); if (in_sched_functions(pc)) { - schedule_frame = ((unsigned long *)(long)p->thread.sp)[1]; - return (unsigned long)((unsigned long *)schedule_frame)[1]; + schedule_frame = (unsigned long)p->thread.sp; + return ((unsigned long *)schedule_frame)[21]; } + return pc; }