greybus: bundle: separate connection disabling and destruction
authorJohan Hovold <johan@hovoldconsulting.com>
Mon, 7 Dec 2015 14:05:42 +0000 (15:05 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Tue, 8 Dec 2015 20:56:38 +0000 (15:56 -0500)
Separate bundle-connection disabling and destruction, and destroy the
connections along with the bundle.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/bundle.c

index 5d058a947413d24a7ffa0f0db606f0118ff91460..0f3a00d8d4f2813e8786681fde04b4f47f1316db 100644 (file)
@@ -81,6 +81,13 @@ static struct gb_bundle *gb_bundle_find(struct gb_interface *intf,
 static void gb_bundle_release(struct device *dev)
 {
        struct gb_bundle *bundle = to_gb_bundle(dev);
+       struct gb_connection *connection;
+       struct gb_connection *tmp;
+
+       list_for_each_entry_safe(connection, tmp, &bundle->connections,
+                                                               bundle_links) {
+               gb_connection_destroy(connection);
+       }
 
        kfree(bundle->state);
        kfree(bundle);
@@ -145,11 +152,9 @@ struct gb_bundle *gb_bundle_create(struct gb_interface *intf, u8 bundle_id,
 static void gb_bundle_connections_exit(struct gb_bundle *bundle)
 {
        struct gb_connection *connection;
-       struct gb_connection *next;
 
-       list_for_each_entry_safe(connection, next, &bundle->connections,
-                                bundle_links)
-               gb_connection_destroy(connection);
+       list_for_each_entry(connection, &bundle->connections, bundle_links)
+               gb_connection_exit(connection);
 }
 
 /*