From: Renaud Lienhart While looking at the timers subsytem code, and especially the __run_timers() function, I found that strange piece of code which basically is: repeat: if (!condition) { do_something(); goto repeat; } which has the same semantics than a "while" loop, but is less comprehensible. Signed-off-by: Renaud Lienhart Signed-off-by: Andrew Morton --- kernel/timer.c | 4 +--- 1 files changed, 1 insertion(+), 3 deletions(-) diff -puN kernel/timer.c~kernel-timerc-remove-a-goto-construct kernel/timer.c --- 25/kernel/timer.c~kernel-timerc-remove-a-goto-construct 2005-05-02 18:46:42.000000000 -0700 +++ 25-akpm/kernel/timer.c 2005-05-02 18:46:42.000000000 -0700 @@ -464,8 +464,7 @@ static inline void __run_timers(tvec_bas cascade(base, &base->tv5, INDEX(3)); ++base->timer_jiffies; list_splice_init(base->tv1.vec + index, &work_list); -repeat: - if (!list_empty(head)) { + while (!list_empty(head)) { void (*fn)(unsigned long); unsigned long data; @@ -485,7 +484,6 @@ repeat: } } spin_lock_irq(&base->t_base.lock); - goto repeat; } } set_running_timer(base, NULL); _