Skip to content

Commit

Permalink
Input: mac mouse emulation - add locking
Browse files Browse the repository at this point in the history
We need to add appropriate locking when toggling mac mouse emulation
on and off to ensure that input device and handler are in consistent
state.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Dmitry Torokhov committed Nov 12, 2010
1 parent a309cdc commit 87abb6b
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/macintosh/mac_hid.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ static int mouse_button3_keycode = KEY_RIGHTALT; /* right option key */

static struct input_dev *mac_hid_emumouse_dev;

static DEFINE_MUTEX(mac_hid_emumouse_mutex);

static int mac_hid_create_emumouse(void)
{
static struct lock_class_key mac_hid_emumouse_dev_event_class;
Expand Down Expand Up @@ -187,6 +189,10 @@ static int mac_hid_toggle_emumouse(ctl_table *table, int write,
int old_val = *valp;
int rc;

rc = mutex_lock_killable(&mac_hid_emumouse_mutex);
if (rc)
return rc;

rc = proc_dointvec(table, write, buffer, lenp, ppos);

if (rc == 0 && write && *valp != old_val) {
Expand All @@ -202,6 +208,8 @@ static int mac_hid_toggle_emumouse(ctl_table *table, int write,
if (rc)
*valp = old_val;

mutex_unlock(&mac_hid_emumouse_mutex);

return rc;
}

Expand Down

0 comments on commit 87abb6b

Please sign in to comment.