greybus: connection: fix connection initialisation
authorJohan Hovold <johan@hovoldconsulting.com>
Wed, 22 Jul 2015 15:49:19 +0000 (17:49 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 22 Jul 2015 18:13:03 +0000 (11:13 -0700)
Make sure connection is fully initialised before registering the
connection device and adding it to the host-device and bundle lists.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/connection.c

index feb6e496338bca5d001f484d198c2a4b819e3be4..4663397cb7e37fb7e2b984a6e07ba7610efe6095 100644 (file)
@@ -183,6 +183,10 @@ gb_connection_create_range(struct greybus_host_device *hd,
        connection->bundle = bundle;
        connection->state = GB_CONNECTION_STATE_DISABLED;
 
+       atomic_set(&connection->op_cycle, 0);
+       spin_lock_init(&connection->lock);
+       INIT_LIST_HEAD(&connection->operations);
+
        connection->dev.parent = parent;
        connection->dev.bus = &greybus_bus_type;
        connection->dev.type = &greybus_connection_type;
@@ -215,10 +219,6 @@ gb_connection_create_range(struct greybus_host_device *hd,
 
        spin_unlock_irq(&gb_connections_lock);
 
-       atomic_set(&connection->op_cycle, 0);
-       spin_lock_init(&connection->lock);
-       INIT_LIST_HEAD(&connection->operations);
-
        /* XXX Will have to establish connections to get version */
        gb_connection_bind_protocol(connection);
        if (!connection->protocol)