Re: [RFC PATCH] Input: evdev - drop redundant list-locking
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2014-07-20 19:53:33
On Sun, Jul 20, 2014 at 09:00:02PM +0200, David Herrmann wrote:
Hi On Sun, Jul 20, 2014 at 8:54 PM, Dmitry Torokhov [off-list ref] wrote:quoted
On Sun, Jul 20, 2014 at 08:48:12PM +0200, David Herrmann wrote:quoted
evdev->client_list is rcu-protected. There is no need to have a separate spinlock just for the list. Either one is good enough, so lets drop the spinlock. Signed-off-by: David Herrmann <redacted> --- Hi I stumbled across this one when doing some evdev reviews. Maybe I'm missing something obvious and I should stop coding on Sundays. But the RCU-protection should be enough here, right?RCU protection is for traversing list only, writes (as is adding and removing elements from client_list) still have to be mutually exclusive.Oh, you mean to protect against concurrent writes? Right, but we could just use evdev->mutex for that. I mean all paths that call attach_client() or detach_client() already lock evdev->mutex at some point. It would allow us to get rid of the lock.
Right, we probably could do it by pulling taking/releasing evdev->mutex into evdev_pen and evdev_release. Thanks. -- Dmitry