aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mn10300/kernel/time.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2008-02-19 13:58:49 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-19 18:51:36 -0500
commit2b79aac9038ee52fd8d89216b1a3ec9bd8285fac (patch)
treeb63476e3926eec36db0c59f37362842f96269de9 /arch/mn10300/kernel/time.c
parente855e5d82edd708bcb966cf7ccda2dee1c154935 (diff)
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/kernel/time.c')
-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)
84 /* advance the kernel's time tracking system */ 84 /* advance the kernel's time tracking system */
85 profile_tick(CPU_PROFILING); 85 profile_tick(CPU_PROFILING);
86 do_timer(1); 86 do_timer(1);
87 update_process_times(user_mode(get_irq_regs()));
88 check_rtc_time(); 87 check_rtc_time();
89 } 88 }
90 89
91 write_sequnlock(&xtime_lock); 90 write_sequnlock(&xtime_lock);
91
92 update_process_times(user_mode(get_irq_regs()));
93
92 return IRQ_HANDLED; 94 return IRQ_HANDLED;
93} 95}
94 96