提交 8078f314 编写于 作者: S Sanjay Singh Rawat 提交者: Felipe Balbi

usb: gadget: f_mass_storage: stop thread in bind failure case

After the worker thread is launched, bind function is doing further
configuration. In case of failure stop the thread.
Acked-by: NMichal Nazarewicz <mina86@mina86.com>
Signed-off-by: NSanjay Singh Rawat <snjsrwt@gmail.com>
Signed-off-by: NFelipe Balbi <balbi@ti.com>
上级 5feb5d20
......@@ -3081,7 +3081,7 @@ static int fsg_bind(struct usb_configuration *c, struct usb_function *f)
/* New interface */
i = usb_interface_id(c, f);
if (i < 0)
return i;
goto fail;
fsg_intf_desc.bInterfaceNumber = i;
fsg->interface_number = i;
......@@ -3124,7 +3124,14 @@ static int fsg_bind(struct usb_configuration *c, struct usb_function *f)
autoconf_fail:
ERROR(fsg, "unable to autoconfigure all endpoints\n");
return -ENOTSUPP;
i = -ENOTSUPP;
fail:
/* terminate the thread */
if (fsg->common->state != FSG_STATE_TERMINATED) {
raise_exception(fsg->common, FSG_STATE_EXIT);
wait_for_completion(&fsg->common->thread_notifier);
}
return i;
}
/****************************** ALLOCATE FUNCTION *************************/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册