msm: sdio: free sdio_tty_drv structure in its uninit

Signed-off-by: Maya Erez <merez@codeaurora.org>
diff --git a/arch/arm/mach-msm/sdio_tty.c b/arch/arm/mach-msm/sdio_tty.c
index 6dfd07a..fca88d8 100644
--- a/arch/arm/mach-msm/sdio_tty.c
+++ b/arch/arm/mach-msm/sdio_tty.c
@@ -532,6 +532,13 @@
 		       __func__);
 		return -ENODEV;
 	}
+	if (sdio_tty_drv->sdio_tty_state == TTY_OPENED) {
+		flush_workqueue(sdio_tty_drv->workq);
+		destroy_workqueue(sdio_tty_drv->workq);
+
+		kfree(sdio_tty_drv->read_buf);
+		sdio_tty_drv->read_buf = NULL;
+	}
 
 	if (sdio_tty_drv->sdio_tty_state != TTY_INITIAL) {
 		tty_unregister_device(sdio_tty_drv->tty_drv, 0);