aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/evdev
diff options
context:
space:
mode:
authorVladimir Kondratyev <wulf@FreeBSD.org>2017-11-01 22:19:19 +0000
committerVladimir Kondratyev <wulf@FreeBSD.org>2017-11-01 22:19:19 +0000
commitf3f8069493a5a9db77a5f660f4f9e613742fdc42 (patch)
treed95c1dddb49f9985c141aeca0af5c9a46d62eabf /sys/dev/evdev
parentf7ee4f902906722add89629da9000c01856c8c91 (diff)
downloadsrc-f3f8069493a5a9db77a5f660f4f9e613742fdc42.tar.gz
src-f3f8069493a5a9db77a5f660f4f9e613742fdc42.zip
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
Notes
Notes: svn path=/head/; revision=325296
Diffstat (limited to 'sys/dev/evdev')
-rw-r--r--sys/dev/evdev/evdev.c4
1 files changed, 4 insertions, 0 deletions
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: