summaryrefslogtreecommitdiff
path: root/drivers/input/input.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2024-11-24 17:05:27 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2024-11-24 17:05:27 -0800
commit0201710ba6308a61f1a775c418fe74b8a31ace08 (patch)
tree4ba8de26ade82869bce1014f1ab19207ec070548 /drivers/input/input.c
parent5c822c0ce5cc83ed4cd8394f3dc46dae8d9a681d (diff)
parent04337738629e8020c272c0dfcd56b9ae0a55ce98 (diff)
Merge branch 'next' into for-linus
Prepare input updates for 6.13 merge window.
Diffstat (limited to 'drivers/input/input.c')
-rw-r--r--drivers/input/input.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 3d2cc13e1f32..fd9d40286b75 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -605,6 +605,9 @@ int input_open_device(struct input_handle *handle)
handle->open++;
+ if (handle->handler->passive_observer)
+ goto out;
+
if (dev->users++ || dev->inhibited) {
/*
* Device is already opened and/or inhibited,
@@ -668,11 +671,13 @@ void input_close_device(struct input_handle *handle)
__input_release_device(handle);
- if (!--dev->users && !dev->inhibited) {
- if (dev->poller)
- input_dev_poller_stop(dev->poller);
- if (dev->close)
- dev->close(dev);
+ if (!handle->handler->passive_observer) {
+ if (!--dev->users && !dev->inhibited) {
+ if (dev->poller)
+ input_dev_poller_stop(dev->poller);
+ if (dev->close)
+ dev->close(dev);
+ }
}
if (!--handle->open) {