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

Index: head-2006-08-03/drivers/input/serio/i8042.c
===================================================================
--- head-2006-08-03.orig/drivers/input/serio/i8042.c	2006-08-03 09:28:04.000000000 +0200
+++ head-2006-08-03/drivers/input/serio/i8042.c	2006-08-09 08:51:25.000000000 +0200
@@ -421,7 +421,6 @@ static irqreturn_t i8042_interrupt(int i
 	unsigned char str, data;
 	unsigned int dfl;
 	unsigned int port_no;
-	int ret;
 
 	mod_timer(&i8042_timer, jiffies + I8042_POLL_PERIOD);
 
@@ -430,11 +429,9 @@ static irqreturn_t i8042_interrupt(int i
 	if (unlikely(~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;
 	}
 	data = i8042_read_data();
-	spin_unlock_irqrestore(&i8042_lock, flags);
 
 	if (i8042_mux_present && (str & I8042_STR_AUXDATA)) {
 		static unsigned long last_transmit;
@@ -488,9 +485,9 @@ static irqreturn_t i8042_interrupt(int i
 	if (likely(port->exists))
 		serio_interrupt(port->serio, data, dfl, regs);
 
-	ret = 1;
- out:
-	return IRQ_RETVAL(ret);
+	spin_unlock_irqrestore(&i8042_lock, flags);
+
+	return IRQ_HANDLED;
 }
 
 /*
