perf: Fix hang while freeing sigtrap event
Key facts
- Attack vector
- Local
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- None · None · High
- Fix status
- Partial Red Hat: 4 without a fix
Attack profile from CVSS 3.1 · NVD. Fix status from CNA and Red Hat.
Summary
In the Linux kernel, the following vulnerability has been resolved: perf: Fix hang while freeing sigtrap event Perf can hang while freeing a sigtrap event if a related deferred signal hadn't managed to be sent before the file got closed: perf_event_overflow() task_work_add(perf_pending_task) fput() task_work_add(____fput()) task_work_run() ____fput() perf_release() perf_event_release_kernel() _free_event() perf_pending_task_sync() task_work_cancel() -> FAILED rcuwait_wait_event() Once task_work_run() is running, the list of pending callbacks is removed from the task_struct and from this point on task_work_cancel() can't remove any pending and not yet started work items, hence the task_work_cancel() failure and the hang on rcuwait_wait_event(). Task work could be changed to remove one work at a time, so a work running on the current task can always cancel a pending one, however the wait / wake design is still subject to inverted dependencies when remote targets are involved, as pictured by Oleg: T1 T2 fd = perf_event_open(pid => T2->pid); fd = perf_event_open(pid => T1->pid); close(fd) close(fd) <IRQ> <IRQ> perf_event_overflow() perf_event_overflow() task_work_add(perf_pending_task) task_work_add(perf_pending_task) </IRQ> </IRQ> fput() fput() task_work_add(____fput()) task_work_add(____fput()) task_work_run() task_work_run() ____fput() ____fput() perf_release() perf_release() perf_event_release_kernel() perf_event_release_kernel() _free_event() _free_event() perf_pending_task_sync() perf_pending_task_sync() rcuwait_wait_event() rcuwait_wait_event() Therefore the only option left is to acquire the event reference count upon queueing the perf task work and release it from the task work, just like it was done before 3a5465418f5f ("perf: Fix event leak upon exec and file release") but without the leaks it fixed. Some adjustments are necessary to make it work: * A child event might dereference its parent upon freeing. Care must be taken to release the parent last. * Some places assuming the event doesn't have any reference held and therefore can be freed right away must instead put the reference and let the reference counting to its job.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Linux | Linux | 6.1.103 to before 6.1.191; 6.6.44 to before 6.6.160; 5.15.165 to before 5.16; 6.10.3 to before 6.11 | 6.1.191, 6.6.160, 5.16, 6.11 | Patch available | CNA |
| Linux | Linux | 6.11 and later | 6.1.191, 6.6.160, 6.12.24, 6.13.12, 6.14.3, 6.15 | Patch available | CNA |
- Linux VendorLinux Affected 6.1.103 to before 6.1.191; 6.6.44 to before 6.6.160; 5.15.165 to before 5.16; 6.10.3 to before 6.11 Fixed in 6.1.191, 6.6.160, 5.16, 6.11 Patch available CNA
- Linux VendorLinux Affected 6.11 and later Fixed in 6.1.191, 6.6.160, 6.12.24, 6.13.12, 6.14.3, 6.15 Patch available CNA
CPE configurations NVD · 2
Remediation
- Fix · CNA Linux (Linux) Fixed in 6.1.191, 6.6.160, 5.16, 6.11
- Fix · CNA Linux (Linux) Fixed in 6.1.191, 6.6.160, 6.12.24, 6.13.12, 6.14.3, 6.15
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Enterprise Linux 10 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 6 | Affected | No fix planned: Out of support scope |
| Red Hat Enterprise Linux 7 | Affected | No fix planned: Out of support scope |
| Red Hat Enterprise Linux 9 | Affected | No fix yet: Fix deferred |
Not affected: 1 product
- Red Hat Enterprise Linux 8
Timeline
- 2026-10-02 Threatist record created from CVE-2025-37747
- 2026-10-03 Alias added: GHSA-g7p4-4259-746x
- 2026-10-21 Fix available: Linux/[email protected], Linux/Linux@aae58a39ac4c63c3fa53536fb2504c9f1d0e1719 · CNA
- 2026-10-21 1 new reference · CNA
- 2026-10-30 Fix available: Linux/Linux@20ab73bb467d900662dca043452aadecb2db8338, Linux/[email protected] · CNA
- 2026-10-30 1 new reference · CNA
- 2026-11-05 CISA SSVC decision points changed
References
Patch 4
More Linux Kernel vulnerabilities
- 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
Sources
- CVE-2025-37747 · CVE Program
- CVE-2025-37747 · NVD
- FIRST EPSS
- GHSA-g7p4-4259-746x · GitHub Advisory Database · CC BY 4.0
- CVE-2025-37747 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences