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);