diff options
author | Phong Tran | 2015-05-14 18:03:04 +0200 |
---|---|---|
committer | Greg Kroah-Hartman | 2015-05-14 18:49:04 +0200 |
commit | 6f8528e0bea76850a153a98e47ad60aecf112801 (patch) | |
tree | 650566f839975eaa24e5b4a75327a0543f98534a /drivers/staging/greybus/loopback.c | |
parent | greybus: make: check kernel configuration options (diff) | |
download | kernel-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.c | 10 |
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; } |