greybus: move operation timeout teardown
authorAlex Elder <elder@linaro.org>
Mon, 17 Nov 2014 14:08:36 +0000 (08:08 -0600)
committerGreg Kroah-Hartman <greg@kroah.com>
Mon, 17 Nov 2014 18:41:19 +0000 (10:41 -0800)
Move the cancel_delayed_work() call so it's done separate from the
removing the operation from the pending list.

This should have been part of this commit:
    d3809f7 greybus: move timeout out of gb_operation_insert()

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/staging/greybus/operation.c

index 603697e5c11698ab80e2213084e38ff472dac14a..344f58f5c39c77ac30c0d79eeb997d483de1536c 100644 (file)
@@ -79,9 +79,6 @@ static void gb_pending_operation_remove(struct gb_operation *operation)
 {
        struct gb_connection *connection = operation->connection;
 
-       /* Shut down our timeout timer */
-       cancel_delayed_work(&operation->timeout_work);
-
        /* Take us off of the list of pending operations */
        spin_lock_irq(&gb_operations_lock);
        list_move_tail(&operation->links, &connection->operations);
@@ -439,6 +436,7 @@ void gb_connection_operation_recv(struct gb_connection *connection,
                        gb_connection_err(connection, "operation not found");
                        return;
                }
+               cancel_delayed_work(&operation->timeout_work);
                gb_pending_operation_remove(operation);
                gbuf = operation->response;
                gbuf->status = GB_OP_SUCCESS;   /* If we got here we're good */