From patchwork Wed Jun 23 11:14:46 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Henrik Rydberg X-Patchwork-Id: 107623 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.4/8.14.3) with ESMTP id o5NBICad014501 for ; Wed, 23 Jun 2010 11:18:12 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752219Ab0FWLSI (ORCPT ); Wed, 23 Jun 2010 07:18:08 -0400 Received: from ch-smtp02.sth.basefarm.net ([80.76.149.213]:44481 "EHLO ch-smtp02.sth.basefarm.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751988Ab0FWLSH (ORCPT ); Wed, 23 Jun 2010 07:18:07 -0400 Received: from c83-248-196-134.bredband.comhem.se ([83.248.196.134]:38167 helo=alnilam) by ch-smtp02.sth.basefarm.net with smtp (Exim 4.68) (envelope-from ) id 1ORNvG-0007cS-9d; Wed, 23 Jun 2010 13:15:21 +0200 Received: by alnilam (sSMTP sendmail emulation); Wed, 23 Jun 2010 13:15:14 +0200 From: "Henrik Rydberg" To: Dmitry Torokhov Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Kosina , Ping Cheng , Benjamin Tissoires , Chase Douglas , Rafi Rubin , Henrik Rydberg Subject: [PATCH 5/5] input: evdev: Never leave the client buffer empty after write Date: Wed, 23 Jun 2010 13:14:46 +0200 Message-Id: <1277291686-7153-6-git-send-email-rydberg@euromail.se> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: <1277291686-7153-5-git-send-email-rydberg@euromail.se> References: <1277291686-7153-1-git-send-email-rydberg@euromail.se> <1277291686-7153-2-git-send-email-rydberg@euromail.se> <1277291686-7153-3-git-send-email-rydberg@euromail.se> <1277291686-7153-4-git-send-email-rydberg@euromail.se> <1277291686-7153-5-git-send-email-rydberg@euromail.se> X-Originating-IP: 83.248.196.134 X-Scan-Result: No virus found in message 1ORNvG-0007cS-9d. X-Scan-Signature: ch-smtp02.sth.basefarm.net 1ORNvG-0007cS-9d 19c01e7921f15d0338c206fc1643ab47 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Wed, 23 Jun 2010 11:18:12 +0000 (UTC) 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)