Read the docs
TI-2025-26537 Aliases CVE-2025-39863GHSA-c7cr-ch33-3xr3

wifi: brcmfmac: fix use-after-free when rescheduling brcmf_btcoex_info work

Priority LOW 35CWE-416Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Code execution
Confidentiality · integrity · availability
High · High · High
Fix status
Partial Red Hat: 4 without a fix

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and Red Hat. Impact type from CWE-416 and the CVSS impact.

Summary

In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: fix use-after-free when rescheduling brcmf_btcoex_info work The brcmf_btcoex_detach() only shuts down the btcoex timer, if the flag timer_on is false. However, the brcmf_btcoex_timerfunc(), which runs as timer handler, sets timer_on to false. This creates critical race conditions: 1.If brcmf_btcoex_detach() is called while brcmf_btcoex_timerfunc() is executing, it may observe timer_on as false and skip the call to timer_shutdown_sync(). 2.The brcmf_btcoex_timerfunc() may then reschedule the brcmf_btcoex_info worker after the cancel_work_sync() has been executed, resulting in use-after-free bugs. The use-after-free bugs occur in two distinct scenarios, depending on the timing of when the brcmf_btcoex_info struct is freed relative to the execution of its worker thread. Scenario 1: Freed before the worker is scheduled The brcmf_btcoex_info is deallocated before the worker is scheduled. A race condition can occur when schedule_work(&bt_local->work) is called after the target memory has been freed. The sequence of events is detailed below: CPU0 | CPU1 brcmf_btcoex_detach | brcmf_btcoex_timerfunc | bt_local->timer_on = false; if (cfg->btcoex->timer_on) | ... | cancel_work_sync(); | ... | kfree(cfg->btcoex); // FREE | | schedule_work(&bt_local->work); // USE Scenario 2: Freed after the worker is scheduled The brcmf_btcoex_info is freed after the worker has been scheduled but before or during its execution. In this case, statements within the brcmf_btcoex_handler() — such as the container_of macro and subsequent dereferences of the brcmf_btcoex_info object will cause a use-after-free access. The following timeline illustrates this scenario: CPU0 | CPU1 brcmf_btcoex_detach | brcmf_btcoex_timerfunc | bt_local->timer_on = false; if (cfg->btcoex->timer_on) | ... | cancel_work_sync(); | ... | schedule_work(); // Reschedule | kfree(cfg->btcoex); // FREE | brcmf_btcoex_handler() // Worker /* | btci = container_of(....); // USE The kfree() above could | ... also occur at any point | btci-> // USE during the worker's execution| */ | To resolve the race conditions, drop the conditional check and call timer_shutdown_sync() directly. It can deactivate the timer reliably, regardless of its current state. Once stopped, the timer_on state is then set to false.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00162 5th percentileScored 2026-11-07
Fix Partial Linux (Linux): 5.15.210, 6.1.167, 6.6.105 +3Red Hat: 4 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
LinuxLinux3.10 and later5.15.210, 6.1.167, 6.6.105, 6.12.46, 6.16.6, 6.17Patch availableCNA
  • Linux VendorLinux Affected 3.10 and later Fixed in 5.15.210, 6.1.167, 6.6.105, 6.12.46, 6.16.6, 6.17 Patch available CNA

CPE configurations NVD · 5

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*3.10 to before 6.6.105; 6.7 to before 6.12.46; 6.13 to before 6.16.6VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.17:rc1:*:*:*:*:*:*6.17 rc1VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.17:rc2:*:*:*:*:*:*6.17 rc2VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.17:rc3:*:*:*:*:*:*6.17 rc3VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.17:rc4:*:*:*:*:*:*6.17 rc4VulnerableLinux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 3.10 to before 6.6.105; 6.7 to before 6.12.46; 6.13 to before 6.16.6 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.17:rc1:*:*:*:*:*:* Versions 6.17 rc1 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.17:rc2:*:*:*:*:*:* Versions 6.17 rc2 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.17:rc3:*:*:*:*:*:* Versions 6.17 rc3 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.17:rc4:*:*:*:*:*:* Versions 6.17 rc4 Vulnerable ·Linux

Remediation

  • Fix · CNA Linux (Linux) Fixed in 5.15.210, 6.1.167, 6.6.105, 6.12.46, 6.16.6, 6.17

Vendor assessments

Red Hat

Red Hat rating: Moderate. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat Enterprise Linux 10AffectedNo fix yet: Fix deferred
Red Hat Enterprise Linux 7AffectedNo fix yet: Fix deferred
Red Hat Enterprise Linux 8AffectedNo fix yet: Fix deferred
Red Hat Enterprise Linux 9AffectedNo fix yet: Fix deferred
Not affected: 1 product
  • Red Hat Enterprise Linux 6

Timeline

  1. 2026-10-02 Threatist record created from CVE-2025-39863
  2. 2026-10-03 Alias added: GHSA-c7cr-ch33-3xr3

References

  • TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
  • TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
  • TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
  • TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
  • TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
  • TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
See all 15278 →

Sources