The update_process_times() should go outside xtime_lock. Otherwise it
will run into deadlock.

Signed-off-by: Thomas Chou <[EMAIL PROTECTED]>
---
 linux-2.6.x/arch/nios2nommu/kernel/time.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/linux-2.6.x/arch/nios2nommu/kernel/time.c 
b/linux-2.6.x/arch/nios2nommu/kernel/time.c
index a98e22e..845414c 100644
--- a/linux-2.6.x/arch/nios2nommu/kernel/time.c
+++ b/linux-2.6.x/arch/nios2nommu/kernel/time.c
@@ -100,9 +100,6 @@ irqreturn_t timer_interrupt(int irq, void *dummy)
        na_timer0->np_timerstatus = 0; /* Clear the interrupt condition */
 
        do_timer(1);
-#ifndef CONFIG_SMP
-       update_process_times(user_mode(get_irq_regs()));
-#endif
        profile_tick(CPU_PROFILING);
        /*
         * If we have an externally synchronized Linux clock, then update
@@ -120,6 +117,11 @@ irqreturn_t timer_interrupt(int irq, void *dummy)
        }
 
        write_sequnlock(&xtime_lock);
+
+#ifndef CONFIG_SMP
+       update_process_times(user_mode(get_irq_regs()));
+#endif
+
        return(IRQ_HANDLED);
 }
 
-- 
1.5.3.3

_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to