USB: f_fs: Set ffs->func to NULL after disabling endpoint in set_alt()

When adb root is performed, userspace will close and open ffs_epsfile.
Closing this file will call ffs_functionfs_callback() which does call
remove_config(). This will call ffs_function_eps_disable to disable
endpoints and then calls ffs_func_unbind(). Unbind() will also call
endpoint disable which might lead to disabling endpoint which is already
disabled. Some of UDC driver throws WARN_ON() if same endpoint is being
disabled multiple time. Hence set ffs->func to NULL after disabling
endpoints in set_alt() to overcome WARN_ON().

Change-Id: I3052bdee74a1793d4e003de4b991d353e5d699b0
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
This commit is contained in:
Vijayavardhan Vennapusa 2016-01-28 10:16:56 -08:00 committed by David Keitel
parent ed7d0b670d
commit 61c08e8af6

View file

@ -2933,8 +2933,10 @@ static int ffs_func_set_alt(struct usb_function *f,
return intf;
}
if (ffs->func)
if (ffs->func) {
ffs_func_eps_disable(ffs->func);
ffs->func = NULL;
}
if (ffs->state == FFS_DEACTIVATED) {
ffs->state = FFS_CLOSING;