From f3f8069493a5a9db77a5f660f4f9e613742fdc42 Mon Sep 17 00:00:00 2001 From: Vladimir Kondratyev Date: Wed, 1 Nov 2017 22:19:19 +0000 Subject: evdev: Take driver's lock in cdev write handler if necessary Reviewed by: gonzo Approved by: gonzo (mentor) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D12676 --- sys/dev/evdev/evdev.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'sys/dev/evdev/evdev.c') diff --git a/sys/dev/evdev/evdev.c b/sys/dev/evdev/evdev.c index 3eb82f042097..f00c76383864 100644 --- a/sys/dev/evdev/evdev.c +++ b/sys/dev/evdev/evdev.c @@ -813,7 +813,11 @@ evdev_inject_event(struct evdev_dev *evdev, uint16_t type, uint16_t code, case EV_ABS: case EV_SW: push: + if (evdev->ev_lock_type != EV_LOCK_INTERNAL) + EVDEV_LOCK(evdev); ret = evdev_push_event(evdev, type, code, value); + if (evdev->ev_lock_type != EV_LOCK_INTERNAL) + EVDEV_UNLOCK(evdev); break; default: -- cgit v1.3