asoc: msm-lsm-client: abort LAB buffering before stop session and close TX

Currently we only set read_abort flag to stop LAB buffering before we call
q6lsm_stop_lab. There is a possibility that this step is skipped under
certain circumstances. This might cause ADSP crash as a result. Therefore,
set flag read_abort before calling q6lsm_stop and q6lsm_close to make sure
LAB buffering is stopped before closing a SVA session.

Change-Id: I7364c31348f908d8920e32f811745549cf305901
Signed-off-by: Xiaoyu Ye <benyxy@codeaurora.org>
diff --git a/asoc/msm-lsm-client.c b/asoc/msm-lsm-client.c
index 5bc897d..450e8b0 100644
--- a/asoc/msm-lsm-client.c
+++ b/asoc/msm-lsm-client.c
@@ -1457,6 +1457,12 @@
 					prtd->lsm_client->lab_started = false;
 				}
 			}
+
+			if (!atomic_read(&prtd->read_abort)) {
+				dev_dbg(rtd->dev,
+					"%s: set read_abort to stop buffering\n", __func__);
+				atomic_set(&prtd->read_abort, 1);
+			}
 			rc = q6lsm_stop(prtd->lsm_client, true);
 			if (!rc)
 				dev_dbg(rtd->dev,
@@ -2660,6 +2666,12 @@
 						__func__, ret);
 			}
 		}
+
+		if (!atomic_read(&prtd->read_abort)) {
+			dev_dbg(rtd->dev,
+				"%s: set read_abort to stop buffering\n", __func__);
+			atomic_set(&prtd->read_abort, 1);
+		}
 		ret = q6lsm_stop(prtd->lsm_client, true);
 		if (ret)
 			dev_err(rtd->dev,
@@ -2690,6 +2702,11 @@
 					SNDRV_PCM_STREAM_CAPTURE);
 
 	if (prtd->lsm_client->opened) {
+		if (!atomic_read(&prtd->read_abort)) {
+			dev_dbg(rtd->dev,
+				"%s: set read_abort to stop buffering\n", __func__);
+			atomic_set(&prtd->read_abort, 1);
+		}
 		q6lsm_close(prtd->lsm_client);
 		prtd->lsm_client->opened = false;
 	}