slimbus-msm: Destroy stale QMI handles

In case of a SSR/PDR down notification miss, QMI handles
wouldn't get destroyed which in turn would result in
stale notifications and memory leak.

Hence destroy stale QMI handles if any, as part of
PDR/SSR up sequence to avoid above mentioned situation.

Change-Id: Ie5621f86664b344c5891671229aed20cf1cd8852
Signed-off-by: Shrey Vijay <shreyv@codeaurora.org>
diff --git a/drivers/slimbus/slim-msm.c b/drivers/slimbus/slim-msm.c
index 24a3ccf..11a60b1 100644
--- a/drivers/slimbus/slim-msm.c
+++ b/drivers/slimbus/slim-msm.c
@@ -1706,6 +1706,11 @@
 	struct qmi_handle *handle;
 	struct slimbus_select_inst_req_msg_v01 req;
 
+	if (dev->qmi.handle || dev->qmi.task) {
+		pr_err("%s: Destroying stale QMI client handle\n", __func__);
+		msm_slim_qmi_exit(dev);
+	}
+
 	kthread_init_worker(&dev->qmi.kworker);
 	init_completion(&dev->qmi.defer_comp);