Skip to content

qcci: Remove client lock around xport close in release_async - #12

Merged
Deepak Kumar Singh (quic-deesin) merged 1 commit into
qualcomm:developmentfrom
quic-pphansal:band-aid
Jan 5, 2026
Merged

Deepak Kumar Singh (quic-deesin) merged 1 commit into
qualcomm:developmentfrom
quic-pphansal:band-aid

Conversation

@quic-pphansal

Copy link
Copy Markdown
Contributor

In qmi_client_release_async(), only hold clnt->lock long enough to mark non-notifier clients as not accepting transactions, clean up pending transactions, save the release callback, and clear clnt->xport_handle. Call xport->ops->close() after dropping clnt->lock using the saved xport_handle.

Moving xport->close() out of the client lock avoids a lock ordering inversion with the control thread, which can hold xport_list_lock while invoking CCI callbacks during transport teardown.

In qmi_client_release_async(), only hold clnt->lock long enough to mark
non-notifier clients as not accepting transactions, clean up pending
transactions, save the release callback, and clear clnt->xport_handle.
Call xport->ops->close() after dropping clnt->lock using the saved
xport_handle.

Moving xport->close() out of the client lock avoids a lock ordering
inversion with the control thread, which can hold xport_list_lock while
invoking CCI callbacks during transport teardown.

Signed-off-by: Pranav Mahesh Phansalkar <pranav.phansalkar@oss.qualcomm.com>
@quic-deesin
Deepak Kumar Singh (quic-deesin) merged commit 88615d0 into qualcomm:development Jan 5, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants