summaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/loopback.c
diff options
context:
space:
mode:
authorPhong Tran2015-05-14 18:03:04 +0200
committerGreg Kroah-Hartman2015-05-14 18:49:04 +0200
commit6f8528e0bea76850a153a98e47ad60aecf112801 (patch)
tree650566f839975eaa24e5b4a75327a0543f98534a /drivers/staging/greybus/loopback.c
parentgreybus: make: check kernel configuration options (diff)
downloadkernel-qcow2-linux-6f8528e0bea76850a153a98e47ad60aecf112801.tar.gz
kernel-qcow2-linux-6f8528e0bea76850a153a98e47ad60aecf112801.tar.xz
kernel-qcow2-linux-6f8528e0bea76850a153a98e47ad60aecf112801.zip
greybus: loopback: add more clean up when init connection fails
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>
Diffstat (limited to 'drivers/staging/greybus/loopback.c')
-rw-r--r--drivers/staging/greybus/loopback.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/staging/greybus/loopback.c b/drivers/staging/greybus/loopback.c
index 285e44b9431f..eeec3323ad6d 100644
--- a/drivers/staging/greybus/loopback.c
+++ b/drivers/staging/greybus/loopback.c
@@ -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;
}