From: Anshul Garg <[email protected]>

If input device is grabbed then client which has grabbed the device can
flush or write to the device so for other clients -EINVAL should be returned.

Signed-off-by: Anshul Garg <[email protected]>
---
 drivers/input/evdev.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index b1a52ab..105e489 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -277,6 +277,8 @@ static int evdev_flush(struct file *file, fl_owner_t id)
 
        if (!evdev->exist || client->revoked)
                retval = -ENODEV;
+       else if (evdev->grab && evdev->grab != client)
+               retval = -EINVAL;
        else
                retval = input_flush_device(&evdev->handle, file);
 
@@ -475,6 +477,11 @@ static ssize_t evdev_write(struct file *file, const char 
__user *buffer,
                goto out;
        }
 
+
+       if (evdev->grab && evdev->grab != client) {
+               retval = -EINVAL;
+               goto out;
+       }
        while (retval + input_event_size() <= count) {
 
                if (input_event_from_user(buffer + retval, &event)) {
-- 
1.7.9.5


---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to