greybus: interface: disable control connection on initialisation errors
Disable the control connection immediately on any errors during interface initialisation as there's no need to keep it around for an interface in an error state. Signed-off-by: Johan Hovold <johan@hovoldconsulting.com> Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Родитель
986d691108
Коммит
11548c8327
|
@ -198,15 +198,20 @@ int gb_interface_init(struct gb_interface *intf)
|
|||
size = gb_control_get_manifest_size_operation(intf);
|
||||
if (size <= 0) {
|
||||
dev_err(&intf->dev, "failed to get manifest size: %d\n", size);
|
||||
|
||||
if (size)
|
||||
return size;
|
||||
ret = size;
|
||||
else
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
|
||||
goto err_disable_control;
|
||||
}
|
||||
|
||||
manifest = kmalloc(size, GFP_KERNEL);
|
||||
if (!manifest)
|
||||
return -ENOMEM;
|
||||
if (!manifest) {
|
||||
ret = -ENOMEM;
|
||||
goto err_disable_control;
|
||||
}
|
||||
|
||||
/* Get manifest using control protocol on CPort */
|
||||
ret = gb_control_get_manifest_operation(intf, manifest, size);
|
||||
|
@ -242,6 +247,8 @@ err_destroy_bundles:
|
|||
gb_bundle_destroy(bundle);
|
||||
err_free_manifest:
|
||||
kfree(manifest);
|
||||
err_disable_control:
|
||||
gb_control_disable(intf->control);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче