Read the docs
TI-2025-25101 Aliases CVE-2025-37747GHSA-g7p4-4259-746x

perf: Fix hang while freeing sigtrap event

Priority LOW 24Published · Updated

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

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00249 16th percentileScored 2026-11-07
Fix Partial Linux (Linux): 6.1.191, 6.6.160, 5.16 +5Red Hat: 4 without a fix

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

VendorProductAffected versionsFixed inStatusSource
LinuxLinux6.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.116.1.191, 6.6.160, 5.16, 6.11Patch availableCNA
LinuxLinux6.11 and later6.1.191, 6.6.160, 6.12.24, 6.13.12, 6.14.3, 6.15Patch availableCNA
  • 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

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*5.15.165 to before 5.16; 6.1.103 to before 6.2; 6.6.44 to before 6.7; 6.10.3 to before 6.12.24; 6.13 to before 6.13.12; 6.14 to before 6.14.3VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:*6.15 rc1VulnerableLinux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 5.15.165 to before 5.16; 6.1.103 to before 6.2; 6.6.44 to before 6.7; 6.10.3 to before 6.12.24; 6.13 to before 6.13.12; 6.14 to before 6.14.3 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:* Versions 6.15 rc1 Vulnerable ·Linux

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 →

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

Timeline

  1. 2026-10-02 Threatist record created from CVE-2025-37747
  2. 2026-10-03 Alias added: GHSA-g7p4-4259-746x
  3. 2026-10-21 Fix available: Linux/[email protected], Linux/Linux@aae58a39ac4c63c3fa53536fb2504c9f1d0e1719 · CNA
  4. 2026-10-21 1 new reference · CNA
  5. 2026-10-30 Fix available: Linux/Linux@20ab73bb467d900662dca043452aadecb2db8338, Linux/[email protected] · CNA
  6. 2026-10-30 1 new reference · CNA
  7. 2026-11-05 CISA SSVC decision points changed

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