]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bus: mhi: ep: Add missing state_lock protection for mhi_state access
authorSumit Kumar <sumit.kumar@oss.qualcomm.com>
Tue, 14 Apr 2026 06:29:41 +0000 (11:59 +0530)
committerManivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Tue, 12 May 2026 14:30:53 +0000 (20:00 +0530)
The mhi_cntrl->mhi_state field should be protected by state_lock to
ensure atomic state transitions. However, mhi_ep_power_up() access
mhi_state without holding this lock, which can race with concurrent state
transitions and lead to state corruption.

Add proper state_lock protection around mhi_state access.

Fixes: fb3a26b7e8af ("bus: mhi: ep: Add support for powering up the MHI endpoint stack")
Fixes: f7d0806bdb1b3 ("bus: mhi: ep: Add support for handling SYS_ERR condition")
Signed-off-by: Sumit Kumar <sumit.kumar@oss.qualcomm.com>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Link: https://patch.msgid.link/20260414-reset_worker_deadlock-v2-2-42fd682b45db@oss.qualcomm.com
drivers/bus/mhi/ep/main.c

index 425525e232f919314a84d846cc544b077eb9c356..5330b03dc6369c68260fa61f5c6e0b7a0186607e 100644 (file)
@@ -1147,7 +1147,9 @@ int mhi_ep_power_up(struct mhi_ep_cntrl *mhi_cntrl)
        for (i = 0; i < mhi_cntrl->event_rings; i++)
                mhi_ep_ring_init(&mhi_cntrl->mhi_event[i].ring, RING_TYPE_ER, i);
 
+       mutex_lock(&mhi_cntrl->state_lock);
        mhi_cntrl->mhi_state = MHI_STATE_RESET;
+       mutex_unlock(&mhi_cntrl->state_lock);
 
        /* Set AMSS EE before signaling ready state */
        mhi_ep_mmio_set_env(mhi_cntrl, MHI_EE_AMSS);