From 127c1fbd55939642365f26efd3121562629ec1b1 Mon Sep 17 00:00:00 2001
From: Viresh Kumar <viresh.kumar@linaro.org>
Date: Thu, 28 Jan 2016 15:50:48 +0530
Subject: [PATCH] greybus: connection: Fix sparse warnings around locking

The callers ensures that connection->lock is taken before calling few
routines, but that isn't enough for sparse as it sees an unexpected
unlock.

greybus/connection.c:380:29: warning: context imbalance in 'gb_connection_cancel_operations' - unexpected unlock

Fix that adding __must_lock() attribute to the function declaration.

This also adds the attribute for
gb_connection_flush_incoming_operations(), which isn't showing any
sparse warnings with the current state of code, but with minor
rearrangements of the code.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
---
 drivers/staging/greybus/connection.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index 77c2f672b405..4f5e2adfa8c4 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -373,6 +373,7 @@ gb_connection_control_disconnected(struct gb_connection *connection)
  */
 static void gb_connection_cancel_operations(struct gb_connection *connection,
 						int errno)
+	__must_hold(&connection->lock)
 {
 	struct gb_operation *operation;
 
@@ -401,6 +402,7 @@ static void gb_connection_cancel_operations(struct gb_connection *connection,
 static void
 gb_connection_flush_incoming_operations(struct gb_connection *connection,
 						int errno)
+	__must_hold(&connection->lock)
 {
 	struct gb_operation *operation;
 	bool incoming;