{"id":"CVE-2026-80944","state":"PUBLISHED","title":"wifi: mwifiex: Detach sync cmd buffer on interrupted wait","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mwifiex: Detach sync cmd buffer on interrupted wait\n\nmwifiex synchronous commands keep the caller-provided data buffer in\ncmd_node->data_buf. Several callers pass stack-allocated objects there.\n\nIf wait_event_interruptible_timeout() is interrupted, the caller can\nreturn and release that stack object while the firmware command is still\nthe current command. A late firmware response then reaches the normal\nresponse handler, which can copy data through cmd_node->data_buf into the\nstale stack address.\n\nThis fixes a stack corruption observed during repeated association and\ndisassociation cycles. The panic trace showed the command wait being\ninterrupted immediately before a bad pointer dereference:\n\n  cmd_wait_q terminated: -512\n  Unable to handle kernel paging request at virtual address 002c583837384662\n  Kernel panic - not syncing: stack-protector: Kernel stack is corrupted\n  ...\n  Tainted: [M]=MACHINE_CHECK\n\nThe fault address decodes as little-endian ASCII:\n\n  0x002c583837384662 -> \"bF878X,\\0\"\n\nwhich is a fragment of the VERSION_EXT firmware string exposed as\ndebugfs \"verext\":\n\n  w8997o-V4, RF878X, FP92, 16.92.21.p153.7\n\nThe same runs also showed corrupted control data containing:\n\n  0x2400372e333531 -> \"153.7\\0$\"\n\nwhich is the tail of the same VERSION_EXT string. This points at a late\nVERSION_EXT response writing through a stale stack-backed data_buf after\nthe interrupted wait returned.\n\nAfter cancelling pending commands on an interrupted or timed-out wait,\ndetach the caller-owned data buffer from the still-current command. This\npreserves the existing command cancellation behaviour while preventing a\nlate response from writing through a pointer whose lifetime ended with the\nwaiting caller.\n\nTested on an i.MX8MP board using an 88W8997.","publishedAt":"2026-09-11T19:42:16.076Z","updatedAt":"2026-10-19T08:45:28.363Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"8c67b8c50286e0cb7f18d667e6a37a2ec6e08ff9","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"9024c7729eb523cf4f3a4203966d3a4aaabf030d","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"9e06c9c8a1f10c55d9bc5d139656d58795e64483","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"f2134d6ff30cd6e1bf63d6b0a5d8e0839f0168b3","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"20ee9c03f261bf6ac59331e2ca7b46b23646412a","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"b1bbeb8970eeb6c6bf3cd5314138103f7b69446d","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"d29a165588b6a0cf7a38db5cbd602aef7ef8c658","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"ef06882c7d8a7400b67d0d003b1008093dd589ed","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/marvell/mwifiex/sta_ioctl.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.15","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.15","versionType":"semver"},{"version":"5.10.270","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.221","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.157","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.109","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.50","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.4","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/marvell/mwifiex/sta_ioctl.c"]}],"references":["https://git.kernel.org/stable/c/8c67b8c50286e0cb7f18d667e6a37a2ec6e08ff9","https://git.kernel.org/stable/c/9024c7729eb523cf4f3a4203966d3a4aaabf030d","https://git.kernel.org/stable/c/9e06c9c8a1f10c55d9bc5d139656d58795e64483","https://git.kernel.org/stable/c/f2134d6ff30cd6e1bf63d6b0a5d8e0839f0168b3","https://git.kernel.org/stable/c/20ee9c03f261bf6ac59331e2ca7b46b23646412a","https://git.kernel.org/stable/c/b1bbeb8970eeb6c6bf3cd5314138103f7b69446d","https://git.kernel.org/stable/c/d29a165588b6a0cf7a38db5cbd602aef7ef8c658","https://git.kernel.org/stable/c/ef06882c7d8a7400b67d0d003b1008093dd589ed"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:07.220Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/80xxx/CVE-2026-80944.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-80944","state":"PUBLISHED","datePublished":"2026-09-11T19:42:16.076Z","dateUpdated":"2026-10-19T08:45:28.363Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-26T14:34:25.803Z"},"containers":{"cna":{"title":"wifi: mwifiex: Detach sync cmd buffer on interrupted wait","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mwifiex: Detach sync cmd buffer on interrupted wait\n\nmwifiex synchronous commands keep the caller-provided data buffer in\ncmd_node->data_buf. Several callers pass stack-allocated objects there.\n\nIf wait_event_interruptible_timeout() is interrupted, the caller can\nreturn and release that stack object while the firmware command is still\nthe current command. A late firmware response then reaches the normal\nresponse handler, which can copy data through cmd_node->data_buf into the\nstale stack address.\n\nThis fixes a stack corruption observed during repeated association and\ndisassociation cycles. The panic trace showed the command wait being\ninterrupted immediately before a bad pointer dereference:\n\n  cmd_wait_q terminated: -512\n  Unable to handle kernel paging request at virtual address 002c583837384662\n  Kernel panic - not syncing: stack-protector: Kernel stack is corrupted\n  ...\n  Tainted: [M]=MACHINE_CHECK\n\nThe fault address decodes as little-endian ASCII:\n\n  0x002c583837384662 -> \"bF878X,\\0\"\n\nwhich is a fragment of the VERSION_EXT firmware string exposed as\ndebugfs \"verext\":\n\n  w8997o-V4, RF878X, FP92, 16.92.21.p153.7\n\nThe same runs also showed corrupted control data containing:\n\n  0x2400372e333531 -> \"153.7\\0$\"\n\nwhich is the tail of the same VERSION_EXT string. This points at a late\nVERSION_EXT response writing through a stale stack-backed data_buf after\nthe interrupted wait returned.\n\nAfter cancelling pending commands on an interrupted or timed-out wait,\ndetach the caller-owned data buffer from the still-current command. This\npreserves the existing command cancellation behaviour while preventing a\nlate response from writing through a pointer whose lifetime ended with the\nwaiting caller.\n\nTested on an i.MX8MP board using an 88W8997."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"8c67b8c50286e0cb7f18d667e6a37a2ec6e08ff9","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"9024c7729eb523cf4f3a4203966d3a4aaabf030d","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"9e06c9c8a1f10c55d9bc5d139656d58795e64483","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"f2134d6ff30cd6e1bf63d6b0a5d8e0839f0168b3","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"20ee9c03f261bf6ac59331e2ca7b46b23646412a","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"b1bbeb8970eeb6c6bf3cd5314138103f7b69446d","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"d29a165588b6a0cf7a38db5cbd602aef7ef8c658","versionType":"git"},{"version":"3d026d09b28dda24777129a931634949c75a9181","status":"affected","lessThan":"ef06882c7d8a7400b67d0d003b1008093dd589ed","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/marvell/mwifiex/sta_ioctl.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.15","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.15","versionType":"semver"},{"version":"5.10.270","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.221","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.157","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.109","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.50","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.4","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/marvell/mwifiex/sta_ioctl.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/8c67b8c50286e0cb7f18d667e6a37a2ec6e08ff9"},{"url":"https://git.kernel.org/stable/c/9024c7729eb523cf4f3a4203966d3a4aaabf030d"},{"url":"https://git.kernel.org/stable/c/9e06c9c8a1f10c55d9bc5d139656d58795e64483"},{"url":"https://git.kernel.org/stable/c/f2134d6ff30cd6e1bf63d6b0a5d8e0839f0168b3"},{"url":"https://git.kernel.org/stable/c/20ee9c03f261bf6ac59331e2ca7b46b23646412a"},{"url":"https://git.kernel.org/stable/c/b1bbeb8970eeb6c6bf3cd5314138103f7b69446d"},{"url":"https://git.kernel.org/stable/c/d29a165588b6a0cf7a38db5cbd602aef7ef8c658"},{"url":"https://git.kernel.org/stable/c/ef06882c7d8a7400b67d0d003b1008093dd589ed"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The stale data_buf write is reached from local cfg80211/nl80211 and debugfs paths that call mwifiex_send_cmd(..., sync) and sleep in mwifiex_wait_queue_complete(), not from parsing received 802.11 frames, so this is a local syscall/ioctl issue rather than an adjacent RF or remote network vector.\nAC:L - The attacker issues a synchronous mwifiex command and signals the waiting thread (or races a second nl80211 dump against an in-flight command); cancel_all_pending_cmd() intentionally leaves curr_cmd queued for the firmware reply, so the late write-through data_buf does not depend on an uncontrolled race or layout.\nPR:L - NL80211_CMD_GET_STATION is unprivileged and still sends sync firmware commands whose interrupted wait runs mwifiex_cancel_all_pending_cmd() against curr_cmd; remain-on-channel and other cfg80211 ops need only CAP_NET_ADMIN, which is a low-privileged local role on mwifiex phones, Chromebooks, and embedded boards rather than init-namespace root.\nUI:N - The attacker performs the nl80211 or debugfs request and delivers the interrupting signal themselves; no separate victim action such as mounting a filesystem or opening a file is required.\nS:U - The corruption hits host kernel stack or heap in the mwifiex command-response path and stays within the same kernel security authority, yielding local privilege escalation or a host panic rather than a VM, IOMMU, or sandbox escape.\nC:H - A late firmware response memcpy's through the dangling cmd_node->data_buf into reused kernel stack (VERSION_EXT copies 128 bytes) or a kfree'd testmode hostcmd buffer (up to 2048 bytes), a use-after-free write that can be reclaimed for arbitrary kernel read.\nI:H - The same stale-pointer write smashes kernel stack frames or a freed heap object, which is exploitable for control-flow hijacking; the observed VERSION_EXT ASCII overwrite already tripped the stack protector.\nA:H - The bug was observed as a kernel paging fault and stack-protector panic (cmd_wait_q terminated: -512, Kernel panic - not syncing: stack-protector: Kernel stack is corrupted), which is a full host availability loss."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T08:45:28.363Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"5.10.270"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"5.15.221"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"6.1.188"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"6.6.157"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"6.12.109"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"6.18.50"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"7.2.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-80944","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T19:21:27.519317Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-16T19:26:36.609Z"}}]}}}