From: Renaud Lienhart <renaud.lienhart@free.fr>

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 <renaud.lienhart@free.fr>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/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-04-10 15:20:01.000000000 -0700
+++ 25-akpm/kernel/timer.c	2005-04-10 15:20:01.000000000 -0700
@@ -446,8 +446,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;
 
@@ -467,7 +466,6 @@ repeat:
 				}
 			}
 			spin_lock_irq(&base->t_base.lock);
-			goto repeat;
 		}
 	}
 	set_running_timer(base, NULL);
_