Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87abb6bb authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

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: default avatarDmitry Torokhov <dtor@mail.ru>
parent a309cdc7
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,8 @@ static int mouse_button3_keycode = KEY_RIGHTALT; /* right option key */


static struct input_dev *mac_hid_emumouse_dev;
static struct input_dev *mac_hid_emumouse_dev;


static DEFINE_MUTEX(mac_hid_emumouse_mutex);

static int mac_hid_create_emumouse(void)
static int mac_hid_create_emumouse(void)
{
{
	static struct lock_class_key mac_hid_emumouse_dev_event_class;
	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 old_val = *valp;
	int rc;
	int rc;


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

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


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


	mutex_unlock(&mac_hid_emumouse_mutex);

	return rc;
	return rc;
}
}