Input: fix sparse warning in __input_release_device()
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 25 Oct 2012 06:53:01 +0000 (23:53 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 25 Oct 2012 07:12:01 +0000 (00:12 -0700)
This fixes the following warning:
drivers/input/input.c:538:23: error: incompatible types in comparison expression (different address spaces)

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/input.c

index 53a0dde..f1be1a7 100644 (file)
@@ -534,8 +534,11 @@ EXPORT_SYMBOL(input_grab_device);
 static void __input_release_device(struct input_handle *handle)
 {
        struct input_dev *dev = handle->dev;
+       struct input_handle *grabber;
 
-       if (dev->grab == handle) {
+       grabber = rcu_dereference_protected(dev->grab,
+                                           lockdep_is_held(&dev->mutex));
+       if (grabber == handle) {
                rcu_assign_pointer(dev->grab, NULL);
                /* Make sure input_pass_event() notices that grab is gone */
                synchronize_rcu();