Index: genarch/src/i8042/i8042.c
===================================================================
--- genarch/src/i8042/i8042.c	(revision 8b473ce1e723ec3fe0dc69bb3cd7d06b18245ba3)
+++ genarch/src/i8042/i8042.c	(revision c624b961df9a4048712600ba1b68ab0e152d54e6)
@@ -272,4 +272,6 @@
 void i8042_init(void)
 {
+	int i;
+
 	exc_register(VECTOR_KBD, "i8042_interrupt", (iroutine) i8042_interrupt);
 	i8042_wait();
@@ -282,14 +284,12 @@
 	chardev_initialize("i8042_kbd", &kbrd, &ops);
 	stdin = &kbrd;
+
 	/*
-	* Clear input buffer
-	*/
-	{
-		int a=0;
-		while((i8042_status_read()&i8042_BUFFER_FULL_MASK)&&(a<20)) {
+	 * Clear input buffer.
+	 * Number of iterations is limited to prevent infinite looping.
+	 */
+	for (i = 0; (i8042_status_read() & i8042_BUFFER_FULL_MASK) && i < 100; i++) {
 		i8042_data_read();
-		a++;
-		}  
-	}
+	}  
 }
 
