diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c --- a/drivers/input/mouse/psmouse-base.c +++ b/drivers/input/mouse/psmouse-base.c @@ -53,7 +53,7 @@ static unsigned int psmouse_smartscroll module_param_named(smartscroll, psmouse_smartscroll, bool, 0644); MODULE_PARM_DESC(smartscroll, "Logitech Smartscroll autorepeat, 1 = enabled (default), 0 = disabled."); -static unsigned int psmouse_resetafter; +static unsigned int psmouse_resetafter = 1; module_param_named(resetafter, psmouse_resetafter, uint, 0644); MODULE_PARM_DESC(resetafter, "Reset device after so many bad packets (0 = never)."); @@ -96,6 +96,10 @@ static psmouse_ret_t psmouse_process_byt struct input_dev *dev = &psmouse->dev; unsigned char *packet = psmouse->packet; + if ((packet[0] & 8) == 0) + return PSMOUSE_BAD_DATA; + + if (psmouse->pktcnt < psmouse->pktsize) return PSMOUSE_GOOD_DATA;