OSDN Git Service

greybus: loopback: add more clean up when init connection fails
authorPhong Tran <tranmanphong@gmail.com>
Thu, 14 May 2015 16:03:04 +0000 (23:03 +0700)
committerGreg Kroah-Hartman <gregkh@google.com>
Thu, 14 May 2015 16:49:04 +0000 (09:49 -0700)
It should remove the object from sysfs when loopback
connection init error.

Signed-off-by: Phong Tran <tranmanphong@gmail.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/loopback.c

index 285e44b..eeec332 100644 (file)
@@ -401,23 +401,25 @@ static int gb_loopback_connection_init(struct gb_connection *connection)
        connection->private = gb;
        retval = sysfs_create_groups(&connection->dev.kobj, loopback_groups);
        if (retval)
-               goto error;
+               goto out_free;
 
        /* Check the version */
        retval = get_version(gb);
        if (retval)
-               goto error;
+               goto out_get_ver;
 
        gb_loopback_reset_stats(gb);
        gb->task = kthread_run(gb_loopback_fn, gb, "gb_loopback");
        if (IS_ERR(gb->task)) {
                retval = PTR_ERR(gb->task);
-               goto error;
+               goto out_get_ver;
        }
 
        return 0;
 
-error:
+out_get_ver:
+       sysfs_remove_groups(&connection->dev.kobj, loopback_groups);
+out_free:
        kfree(gb);
        return retval;
 }