From 3f0d27aba28dee6d0b1e2e363c7f68fa342fa866 Mon Sep 17 00:00:00 2001 From: Sai Chaitanya Kaveti Date: Tue, 8 Feb 2022 15:43:54 +0530 Subject: [PATCH] msm: mhi_dev: Adding check for event ring During the initialization, device waits for M0 state. Ring structures are not yet allocated at this point. While waiting if device receives a D3cold or D3hot event, device enters the sys err state. At the end of sys err handling it acceses the event ring in mhi_dev_send_multiple_tr_events API which is causing device crash. Adding check for event ring in send multiple tr events API to fail it if ring is not present. Change-Id: Iffe44107c1925e0cccb38651aa09ba1f893f1014 Signed-off-by: Sai Chaitanya Kaveti --- drivers/platform/msm/mhi_dev/mhi.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/platform/msm/mhi_dev/mhi.c b/drivers/platform/msm/mhi_dev/mhi.c index 67a7fc97a699..56b846e18f89 100644 --- a/drivers/platform/msm/mhi_dev/mhi.c +++ b/drivers/platform/msm/mhi_dev/mhi.c @@ -466,6 +466,11 @@ static int mhi_dev_send_multiple_tr_events(struct mhi_dev *mhi, int evnt_ring, return -EINVAL; } + if (!ring) { + pr_err("%s(): Ring %d not present\n", __func__, evnt_ring_idx); + return -EINVAL; + } + ctx = (union mhi_dev_ring_ctx *)&mhi->ev_ctx_cache[evnt_ring]; if (mhi_ring_get_state(ring) == RING_STATE_UINT) {