From: rmaxfiel@novell.com
Subject: fix erratic mouse when run in fully virtualized environment
References:

--- linux-2.6.9/drivers/input/serio/i8042.c	2006-11-21 21:08:50.000000000 -0500
+++ linux-2.6.9/drivers/input/serio/i8042.c	2006-11-21 21:16:16.000000000 -0500
@@ -367,7 +367,6 @@
 	unsigned char str, data = 0;
 	unsigned int dfl;
 	unsigned int aux_idx;
-	int ret;
 
 	mod_timer(&i8042_timer, jiffies + I8042_POLL_PERIOD);
 
@@ -375,12 +374,11 @@
 	str = i8042_read_status();
 	if (str & I8042_STR_OBF)
 		data = i8042_read_data();
-	spin_unlock_irqrestore(&i8042_lock, flags);
 
 	if (~str & I8042_STR_OBF) {
+		spin_unlock_irqrestore(&i8042_lock, flags);
 		if (irq) dbg("Interrupt %d, without any data", irq);
-		ret = 0;
-		goto out;
+		return IRQ_NONE;
 	}
 
 	if (i8042_mux_present && (str & I8042_STR_AUXDATA)) {
@@ -446,9 +444,9 @@
 	}
 
 irq_ret:
-	ret = 1;
-out:
-	return IRQ_RETVAL(ret);
+	spin_unlock_irqrestore(&i8042_lock, flags);
+
+	return IRQ_HANDLED;
 }
 
 /*
