aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mn10300
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2008-02-19 18:58:49 +0000
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-19 15:51:36 -0800
commit2b79aac9038ee52fd8d89216b1a3ec9bd8285fac (patch)
treeb63476e3926eec36db0c59f37362842f96269de9 /arch/mn10300
parentMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband (diff)
downloadlinux-dev-2b79aac9038ee52fd8d89216b1a3ec9bd8285fac.tar.xz
linux-dev-2b79aac9038ee52fd8d89216b1a3ec9bd8285fac.zip
MN10300: Call update_process_times() outside of the xtime_lock
Call update_process_times() outside of the xtime_lock. Somewhere somewhere inside one of the functions called by that, xtime_lock is readlocked, which ends up in a deadlock situation. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/mn10300')
-rw-r--r--arch/mn10300/kernel/time.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/mn10300/kernel/time.c b/arch/mn10300/kernel/time.c
index ff492e3b3457..babb7c2ac377 100644
--- a/arch/mn10300/kernel/time.c
+++ b/arch/mn10300/kernel/time.c
@@ -84,11 +84,13 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
/* advance the kernel's time tracking system */
profile_tick(CPU_PROFILING);
do_timer(1);
- update_process_times(user_mode(get_irq_regs()));
check_rtc_time();
}
write_sequnlock(&xtime_lock);
+
+ update_process_times(user_mode(get_irq_regs()));
+
return IRQ_HANDLED;
}