connection: silence lockdep on wrongly _nested() calls
authorDavid Herrmann <dh.herrmann@gmail.com>
Thu, 8 Jan 2015 23:12:42 +0000 (00:12 +0100)
committerDavid Herrmann <dh.herrmann@gmail.com>
Thu, 8 Jan 2015 23:12:42 +0000 (00:12 +0100)
If we call lock2() with a==NULL, we call _nested(1), which is wrong. Fix
this so lockdep works correctly.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
connection.h

index 5b5a27a0b98aa79fb9055b8857c4c94c29b3164a..11dbd31b6cbd7b6b9f48c40cffbc5f0d12efd1ec 100644 (file)
@@ -221,13 +221,21 @@ static inline void kdbus_conn_lock2(struct kdbus_conn *a, struct kdbus_conn *b)
        if (a < b) {
                if (a)
                        mutex_lock(&a->lock);
-               if (b)
-                       mutex_lock_nested(&b->lock, 1);
+               if (b) {
+                       if (a)
+                               mutex_lock_nested(&b->lock, 1);
+                       else
+                               mutex_lock(&b->lock);
+               }
        } else {
                if (b)
                        mutex_lock(&b->lock);
-               if (a)
-                       mutex_lock_nested(&a->lock, 1);
+               if (a) {
+                       if (b)
+                               mutex_lock_nested(&a->lock, 1);
+                       else
+                               mutex_lock(&a->lock);
+               }
        }
 }