greybus: connection: Call connection_destroy() from gb_connection_svc_connection_dest...
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 7 Sep 2015 10:31:23 +0000 (16:01 +0530)
committerGreg Kroah-Hartman <gregkh@google.com>
Tue, 15 Sep 2015 04:19:46 +0000 (21:19 -0700)
connection_create() is called right after svc is requested to create the
connection and so connection_destroy() must be called just before we
request the SVC to destroy the connection.

Over that, this fixes the inconsistency where connection_create() is
called for all connections except SVC connection, but
connection_destroy() is called always.

Acked-by: Alexandre Bailon <abailon@baylibre.com>
Fixes: 5313ca607afb ("Greybus driver: add a new callbacks to driver")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/connection.c

index de3962a..e1a7705 100644 (file)
@@ -318,6 +318,9 @@ gb_connection_svc_connection_destroy(struct gb_connection *connection)
        if (connection->hd_cport_id == GB_SVC_CPORT_ID)
                return;
 
+       if (connection->hd->driver->connection_destroy)
+               connection->hd->driver->connection_destroy(connection);
+
        gb_svc_connection_destroy(connection->hd->svc,
                                  connection->hd->endo->ap_intf_id,
                                  connection->hd_cport_id,
@@ -462,9 +465,6 @@ void gb_connection_destroy(struct gb_connection *connection)
        list_del(&connection->hd_links);
        spin_unlock_irq(&gb_connections_lock);
 
-       if (connection->hd->driver->connection_destroy)
-               connection->hd->driver->connection_destroy(connection);
-
        if (connection->protocol)
                gb_protocol_put(connection->protocol);
        connection->protocol = NULL;