summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2008-02-19 21:58:49 +0300
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-20 02:51:36 +0300
commit2b79aac9038ee52fd8d89216b1a3ec9bd8285fac (patch)
treeb63476e3926eec36db0c59f37362842f96269de9
parente855e5d82edd708bcb966cf7ccda2dee1c154935 (diff)
downloadlinux-2b79aac9038ee52fd8d89216b1a3ec9bd8285fac.tar.xz
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>
-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;
}