From: Alex Elder <elder@linaro.org>
Date: Wed, 3 Dec 2014 14:35:06 +0000 (-0600)
Subject: greybus: don't use 0 as an operation id
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=0ba02c4d1675c426f38f3beb6b6cb1a3d9aeff97;p=linux.git

greybus: don't use 0 as an operation id

Stop allowing 0x0000 to be used as an operation id.  That id will be
reserved for use by operations that will return no response message.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
---

diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c
index b2ebbe42a45be..c0e206db9ed73 100644
--- a/drivers/staging/greybus/operation.c
+++ b/drivers/staging/greybus/operation.c
@@ -151,10 +151,11 @@ static void gb_pending_operation_insert(struct gb_operation *operation)
 
 	/*
 	 * Assign the operation's id and move it into its
-	 * connection's pending list.
+	 * connection's pending list.  Zero is a reserved operation
+	 * id.
 	 */
 	spin_lock_irq(&gb_operations_lock);
-	operation->id = ++connection->op_cycle;
+	operation->id = ++connection->op_cycle % U16_MAX + 1;
 	list_move_tail(&operation->links, &connection->pending);
 	spin_unlock_irq(&gb_operations_lock);