Message ID | 1277291686-7153-6-git-send-email-rydberg@euromail.se (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 728802f..45eae19 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -62,10 +62,13 @@ static void evdev_pass_event(struct evdev_client *client, { /* * Interrupts are disabled, just acquire the lock + * Never leave the client buffer empty */ spin_lock(&client->buffer_lock); - client->buffer[client->head++] = *event; - client->head &= client->bufsize - 1; + do { + client->buffer[client->head++] = *event; + client->head &= client->bufsize - 1; + } while (client->head == client->tail); spin_unlock(&client->buffer_lock); if (event->type == EV_SYN)