From c4a6a7cf4798fde595149a84da6278b07302e85a Mon Sep 17 00:00:00 2001 From: Dmitry Torokhov Date: Wed, 21 Jan 2004 12:25:16 +0100 Subject: [PATCH] input: If we get a byte with timeout or parity flags in psmouse.c, we take the appropriate action. (throw the byte away, reset byte counter, return NAK if acking, and complain). --- drivers/input/mouse/psmouse-base.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c index 4b243cd5f64c7..19ab408656005 100644 --- a/drivers/input/mouse/psmouse-base.c +++ b/drivers/input/mouse/psmouse-base.c @@ -121,6 +121,19 @@ static irqreturn_t psmouse_interrupt(struct serio *serio, if (psmouse->state == PSMOUSE_IGNORE) goto out; + if (flags & (SERIO_PARITY|SERIO_TIMEOUT)) { + if (psmouse->state == PSMOUSE_ACTIVATED) + printk(KERN_WARNING "psmouse.c: bad data from KBC -%s%s\n", + flags & SERIO_TIMEOUT ? " timeout" : "", + flags & SERIO_PARITY ? " bad parity" : ""); + if (psmouse->acking) { + psmouse->ack = -1; + psmouse->acking = 0; + } + psmouse->pktcnt = 0; + goto out; + } + if (psmouse->acking) { switch (data) { case PSMOUSE_RET_ACK: -- 2.53.0