summaryrefslogtreecommitdiffstats
path: root/sys/dev/atkbdc
diff options
context:
space:
mode:
authordumbbell <dumbbell@FreeBSD.org>2006-01-05 19:24:01 +0000
committerdumbbell <dumbbell@FreeBSD.org>2006-01-05 19:24:01 +0000
commitf3ad199cdc0b6b93a2b175b4721f556810fc3750 (patch)
tree00c8afa0d69404c1cbcad41eaf48dd086dde9aae /sys/dev/atkbdc
parentd6c88c0f27b6e6c0006896e7fb3e47f0f7e992d8 (diff)
downloadFreeBSD-src-f3ad199cdc0b6b93a2b175b4721f556810fc3750.zip
FreeBSD-src-f3ad199cdc0b6b93a2b175b4721f556810fc3750.tar.gz
Fix a bug in Synaptics Touchapd support where psm(4) will enter an infinite
loop if it receives an out of sync packet. Reviewed by: mux (mentor) MFC after: 4 days
Diffstat (limited to 'sys/dev/atkbdc')
-rw-r--r--sys/dev/atkbdc/psm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/atkbdc/psm.c b/sys/dev/atkbdc/psm.c
index 25edbb8..c156cee 100644
--- a/sys/dev/atkbdc/psm.c
+++ b/sys/dev/atkbdc/psm.c
@@ -2546,7 +2546,7 @@ psmsoftintr(void *arg)
/* Sanity check for out of sync packets. */
if ((pb->ipacket[0] & 0xc8) != 0x80 ||
(pb->ipacket[3] & 0xc8) != 0xc0)
- continue;
+ goto NEXT;
x = y = x0 = y0 = 0;
@@ -2818,6 +2818,7 @@ psmsoftintr(void *arg)
}
pb->inputbytes = 0;
+NEXT:
if (++sc->pqueue_start >= PSM_PACKETQUEUE)
sc->pqueue_start = 0;
} while (sc->pqueue_start != sc->pqueue_end);
OpenPOWER on IntegriCloud