USB: gadget: f_accessory: Clear previous strings on ACCESSORY_GET_PROTOCOL
authorMike Lockwood <lockwood@android.com>
Sun, 13 Mar 2011 00:59:12 +0000 (19:59 -0500)
committerMike Lockwood <lockwood@android.com>
Sun, 13 Mar 2011 01:19:25 +0000 (20:19 -0500)
Clearing strings on disconnect does not work since we may receive
a disconnect on some devices when transitioning into accessory mode.
We require an accessory to send ACCESSORY_GET_PROTOCOL before
sending any strings, so any strings from a previous session will be cleared.

Signed-off-by: Mike Lockwood <lockwood@android.com>
drivers/usb/gadget/f_accessory.c

index ef21c05caaedca210a1f348d6ebe5313a55b6f36..f6a5922e8c3b7f4621c69df3152f3e43ad0bc6b5 100644 (file)
@@ -220,13 +220,6 @@ static void acc_set_disconnected(struct acc_dev *dev)
 {
        dev->online = 0;
        dev->disconnected = 1;
-
-       /* clear all accessory strings */
-       memset(dev->manufacturer, 0, sizeof(dev->manufacturer));
-       memset(dev->model, 0, sizeof(dev->model));
-       memset(dev->description, 0, sizeof(dev->description));
-       memset(dev->version, 0, sizeof(dev->version));
-       memset(dev->uri, 0, sizeof(dev->uri));
 }
 
 static void acc_complete_in(struct usb_ep *ep, struct usb_request *req)
@@ -657,6 +650,13 @@ static int acc_function_setup(struct usb_function *f,
                        if (b_request == ACCESSORY_GET_PROTOCOL) {
                                *((u16 *)cdev->req->buf) = PROTOCOL_VERSION;
                                value = sizeof(u16);
+
+                               /* clear any strings left over from a previous session */
+                               memset(dev->manufacturer, 0, sizeof(dev->manufacturer));
+                               memset(dev->model, 0, sizeof(dev->model));
+                               memset(dev->description, 0, sizeof(dev->description));
+                               memset(dev->version, 0, sizeof(dev->version));
+                               memset(dev->uri, 0, sizeof(dev->uri));
                        }
                }
        }