usb: gadget: ffs: call functionfs_unbind() if _ffs_func_bind() fails
Function ffs_do_functionfs_bind() calls functionfs_bind() which allocates usb request and increments refcounts. These things needs to be cleaned up by if further steps of initialization fail by calling functionfs_unbind(). Signed-off-by: Robert Baldyga <r.baldyga@samsung.com> Acked-by: Michal Nazarewicz <mina86@mina86.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
913e4a90b6
commit
55d811211b
1 changed files with 7 additions and 1 deletions
|
@ -2897,11 +2897,17 @@ static int ffs_func_bind(struct usb_configuration *c,
|
|||
struct usb_function *f)
|
||||
{
|
||||
struct f_fs_opts *ffs_opts = ffs_do_functionfs_bind(f, c);
|
||||
struct ffs_function *func = ffs_func_from_usb(f);
|
||||
int ret;
|
||||
|
||||
if (IS_ERR(ffs_opts))
|
||||
return PTR_ERR(ffs_opts);
|
||||
|
||||
return _ffs_func_bind(c, f);
|
||||
ret = _ffs_func_bind(c, f);
|
||||
if (ret && !--ffs_opts->refcnt)
|
||||
functionfs_unbind(func->ffs);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue