]> git.neil.brown.name Git - history.git/commitdiff
input: If we get a byte with timeout or parity flags in psmouse.c,
authorDmitry Torokhov <dtor_core@ameritech.net>
Wed, 21 Jan 2004 11:25:16 +0000 (12:25 +0100)
committerVojtech Pavlik <vojtech@ucw.cz>
Wed, 21 Jan 2004 11:25:16 +0000 (12:25 +0100)
       we take the appropriate action. (throw the byte away, reset
       byte counter, return NAK if acking, and complain).

drivers/input/mouse/psmouse-base.c

index 4b243cd5f64c7a966e2b08892b419c3c9a00d407..19ab408656005ea76512996af7b4ebfe5b0a2c41 100644 (file)
@@ -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: