struct input_event *event)
 {
        /*
-        * Interrupts are disabled, just acquire the lock
+        * Interrupts are disabled, just acquire the lock.
+        * Make sure we don't leave with the client buffer
+        * "empty" by having client->head == client->tail.
         */
        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)