diff options
author | David Howells <dhowells@redhat.com> | 2008-02-19 13:58:49 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-19 18:51:36 -0500 |
commit | 2b79aac9038ee52fd8d89216b1a3ec9bd8285fac (patch) | |
tree | b63476e3926eec36db0c59f37362842f96269de9 /arch | |
parent | e855e5d82edd708bcb966cf7ccda2dee1c154935 (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')
-rw-r--r-- | arch/mn10300/kernel/time.c | 4 |
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 | ||