USB: rmnet: Free device context memory only during cleanup

Device context is currently allocated only once during
initialization and it gets freed during function unbind.
This causes memory corruption issue as device context is
accessed again after compostion switch.
Fix this issue by freeing the memory only at the time of
cleaning up the function driver resources.

Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
diff --git a/drivers/usb/gadget/android.c b/drivers/usb/gadget/android.c
index f1575bd..671b84c 100644
--- a/drivers/usb/gadget/android.c
+++ b/drivers/usb/gadget/android.c
@@ -216,6 +216,11 @@
 	return frmnet_init_port(MAX_RMNET_INSTANCES);
 }
 
+static void rmnet_function_cleanup(struct android_usb_function *f)
+{
+	frmnet_cleanup();
+}
+
 static int rmnet_function_bind_config(struct android_usb_function *f,
 					 struct usb_configuration *c)
 {
@@ -259,6 +264,7 @@
 static struct android_usb_function rmnet_function = {
 	.name		= "rmnet",
 	.init		= rmnet_function_init,
+	.cleanup	= rmnet_function_cleanup,
 	.bind_config	= rmnet_function_bind_config,
 	.attributes	= rmnet_function_attributes,
 };