ndis: fix invalid memory access to removed adapter during qmux broadcast - #104
Open
Chenxi Han (5656hcx) wants to merge 1 commit into
Open
ndis: fix invalid memory access to removed adapter during qmux broadcast#104Chenxi Han (5656hcx) wants to merge 1 commit into
Chenxi Han (5656hcx) wants to merge 1 commit into
Conversation
Chenxi Han (5656hcx)
requested review from
hangzqcom,
Rohit Mishra (rohimish-qc),
Shashank Arora (shasaror) and
Tejas Sharma (tejas-sharma27)
August 18, 2026 21:25
Signed-off-by: Chenxi Han <chehan@qti.qualcomm.com>
Chenxi Han (5656hcx)
force-pushed
the
qmux-broadcast-crash
branch
from
August 18, 2026 21:35
8657ac1 to
559cad8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
A
SYSTEM_THREAD_EXCEPTION_NOT_HANDLED(bugcheck 0x7E) kernel crash occurs when a USB WWAN device is unregistered while the driver is concurrently processing an inbound QMI indication message.Crash signature:
MPIOC_FindIoDeviceiterates the globalMP_DeviceListto route inbound QMI messages to registered user-space clients. When called withDeviceObject == NULL(the QMI routing path), it unconditionally dereferences the pointer chainpIocDev->Adapter->USBDo->DeviceExtensionfor every list entry without first validating that the adapter is still alive.During concurrent USB device removal,
pIocDev->Adapterbecomes a dangling pointer — the adapter object is freed but theMPIOC_DEV_INFOlist entry still references it. The freed memory is subsequently reused (confirmed by crash dump:rax = 0x0036003200370038, a Unicode string pattern), causing the dereference chain to produce an invalid pointer (0xffffffffffffffff) and triggering the access violation.Type of Change
release/x.ybranch)How has this been tested?
Checklist
<branch-prefix>/<area>/<description>feature/bugfix/hotfix/docs)develop(orrelease/x.yfor hotfix) - no merge commitsSigned-off-by:(DCO) - see CONTRIBUTING.mdFixes #...)