diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2024-11-24 17:05:27 -0800 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2024-11-24 17:05:27 -0800 |
commit | 0201710ba6308a61f1a775c418fe74b8a31ace08 (patch) | |
tree | 4ba8de26ade82869bce1014f1ab19207ec070548 /drivers/input/input.c | |
parent | 5c822c0ce5cc83ed4cd8394f3dc46dae8d9a681d (diff) | |
parent | 04337738629e8020c272c0dfcd56b9ae0a55ce98 (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.c | 15 |
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) { |