This is a note to let you know that I've just added the patch titled bus: mhi: host: Drop chan lock before queuing buffers to the 6.6-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: bus-mhi-host-drop-chan-lock-before-queuing-buffers.patch and it can be found in the queue-6.6 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 01bd694ac2f682fb8017e16148b928482bc8fa4b Mon Sep 17 00:00:00 2001 From: Qiang Yu <quic_qianyu@xxxxxxxxxxx> Date: Mon, 11 Dec 2023 14:42:52 +0800 Subject: bus: mhi: host: Drop chan lock before queuing buffers From: Qiang Yu <quic_qianyu@xxxxxxxxxxx> commit 01bd694ac2f682fb8017e16148b928482bc8fa4b upstream. Ensure read and write locks for the channel are not taken in succession by dropping the read lock from parse_xfer_event() such that a callback given to client can potentially queue buffers and acquire the write lock in that process. Any queueing of buffers should be done without channel read lock acquired as it can result in multiple locks and a soft lockup. Cc: <stable@xxxxxxxxxxxxxxx> # 5.7 Fixes: 1d3173a3bae7 ("bus: mhi: core: Add support for processing events from client device") Signed-off-by: Qiang Yu <quic_qianyu@xxxxxxxxxxx> Reviewed-by: Jeffrey Hugo <quic_jhugo@xxxxxxxxxxx> Tested-by: Jeffrey Hugo <quic_jhugo@xxxxxxxxxxx> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx> Link: https://lore.kernel.org/r/1702276972-41296-3-git-send-email-quic_qianyu@xxxxxxxxxxx [mani: added fixes tag and cc'ed stable] Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/bus/mhi/host/main.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/bus/mhi/host/main.c +++ b/drivers/bus/mhi/host/main.c @@ -643,6 +643,8 @@ static int parse_xfer_event(struct mhi_c mhi_del_ring_element(mhi_cntrl, tre_ring); local_rp = tre_ring->rp; + read_unlock_bh(&mhi_chan->lock); + /* notify client */ mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result); @@ -668,6 +670,8 @@ static int parse_xfer_event(struct mhi_c kfree(buf_info->cb_buf); } } + + read_lock_bh(&mhi_chan->lock); } break; } /* CC_EOT */ Patches currently in stable-queue which might be from quic_qianyu@xxxxxxxxxxx are queue-6.6/bus-mhi-host-drop-chan-lock-before-queuing-buffers.patch queue-6.6/bus-mhi-host-add-spinlock-to-protect-wp-access-when-queueing-tres.patch