Input: mac mouse emulation - add locking
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>
This commit is contained in:
Родитель
a309cdc778
Коммит
87abb6bbdb
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче