From d22ee08595dafee60bde87d75f3ee2d94b7276b0 Mon Sep 17 00:00:00 2001 From: William Wu Date: Fri, 28 Feb 2020 18:39:28 +0800 Subject: [PATCH] usb: gadget: configfs: make sure to reactivate function on unbind If a configs function sets bind_deactivated flag, upon removal it will be left with an unbalanced deactivation. Let's make sure that we conditionally call usb_function_activate() from purge_configs_funcs() and make sure purge_configs_funcs() is called from configfs_composite_unbind(). Change-Id: Ibe91837fdb7754f8af343a18138556901a0e089f Signed-off-by: William Wu --- drivers/usb/gadget/configfs.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 247f8ada6c6a..c32485006f72 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -1254,6 +1254,9 @@ static void purge_configs_funcs(struct gadget_info *gi) f->name, f); f->unbind(c, f); } + + if (f->bind_deactivated) + usb_function_activate(f); } c->next_interface_id = 0; memset(c->interface, 0, sizeof(c->interface));