--- linux-2.6.37/drivers/input/serio/serport.c.orig 2011-01-18 12:33:41.421709232 +0100 +++ linux-2.6.37/drivers/input/serio/serport.c 2011-01-18 13:33:24.521711214 +0100 @@ -116,8 +116,8 @@ static void serport_ldisc_close(struct t /* * serport_ldisc_receive() is called by the low level tty driver when characters - * are ready for us. We forward the characters, one by one to the 'interrupt' - * routine. + * are ready for us. We forward the characters and flags, one by one to the + * 'interrupt' routine. */ static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *cp, char *fp, int count) @@ -132,7 +132,7 @@ static void serport_ldisc_receive(struct goto out; for (i = 0; i < count; i++) - serio_interrupt(serport->serio, cp[i], 0); + serio_interrupt(serport->serio, cp[i], fp[i]); out: spin_unlock_irqrestore(&serport->lock, flags);