From 43b0fbcb5487ab758471bd0d5eae5129c2cabc75 Mon Sep 17 00:00:00 2001 From: Kuen-Han Tsai Date: Fri, 3 Mar 2023 12:47:59 +0800 Subject: [PATCH] ANDROID: usb: gadget: f_accessory: update to usb_gstrings_attach For AOA re-connection, since the string ID of accessory has been changed into a non-zero value, the f_accessory failes to call `usb_string_id` to increment `next_string_id`. This makes the ADB interface display a wrong name. Bug: 270044830 Test: CTS Verifier: USB Accessory Test Test: manual test Signed-off-by: Kuen-Han Tsai Change-Id: I807164588e80b28065e8715591a100392b04d3de --- drivers/usb/gadget/function/f_accessory.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c index 3510f6d39f0c..c228088a4485 100644 --- a/drivers/usb/gadget/function/f_accessory.c +++ b/drivers/usb/gadget/function/f_accessory.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -1090,6 +1091,7 @@ __acc_function_bind(struct usb_configuration *c, struct usb_function *f, bool configfs) { struct usb_composite_dev *cdev = c->cdev; + struct usb_string *us; struct acc_dev *dev = func_to_dev(f); int id; int ret; @@ -1097,13 +1099,11 @@ __acc_function_bind(struct usb_configuration *c, DBG(cdev, "acc_function_bind dev: %p\n", dev); if (configfs) { - if (acc_string_defs[INTERFACE_STRING_INDEX].id == 0) { - ret = usb_string_id(c->cdev); - if (ret < 0) - return ret; - acc_string_defs[INTERFACE_STRING_INDEX].id = ret; - acc_interface_desc.iInterface = ret; - } + us = usb_gstrings_attach(cdev, acc_strings, ARRAY_SIZE(acc_string_defs)); + if (IS_ERR(us)) + return PTR_ERR(us); + ret = us[INTERFACE_STRING_INDEX].id; + acc_interface_desc.iInterface = ret; dev->cdev = c->cdev; } ret = hid_register_driver(&acc_hid_driver);