Don't create new usb_gadget_string_container if the current strings are already exist in the usb_composite_dev. Otherwise the ids_tab will overflow soon if we bind / unbind usb functions frequently like android does. Signed-off-by: Neil Zhang <zhangwm@xxxxxxxxxxx> --- drivers/usb/gadget/composite.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index a8c18df..6fe3c6b 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -1183,6 +1183,12 @@ struct usb_string *usb_gstrings_attach(struct usb_composite_dev *cdev, if (!n_gstrings) return ERR_PTR(-EINVAL); + list_for_each_entry(uc, &cdev->gstrings, list) { + n_gs = get_containers_gs(uc); + if (!strcmp(n_gs[0]->strings[0].s, sp[0]->strings[0].s)) + return n_gs[0]->strings; + } + uc = copy_gadget_strings(sp, n_gstrings, n_strings); if (IS_ERR(uc)) return ERR_CAST(uc); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html