CVE-2024-43870

MediumCVSS 5.5/10Last modified Jun 17, 2026

Description

In the Linux kernel, the following vulnerability has been resolved:

perf: Fix event leak upon exit

When a task is scheduled out, pending sigtrap deliveries are deferred to the target task upon resume to userspace via task_work.

However failures while adding an event's callback to the task_work engine are ignored. And since the last call for events exit happen after task work is eventually closed, there is a small window during which pending sigtrap can be queued though ignored, leaking the event refcount addition such as in the following scenario:

TASK A -----

do_exit() exit_task_work(tsk);

<IRQ> perf_event_overflow() event->pending_sigtrap = pending_id; irq_work_queue(&event->pending_irq); </IRQ> =========> PREEMPTION: TASK A -> TASK B event_sched_out() event->pending_sigtrap = 0; atomic_long_inc_not_zero(&event->refcount) // FAILS: task work has exited task_work_add(&event->pending_task) [...] <IRQ WORK> perf_pending_irq() // early return: event->oncpu = -1 </IRQ WORK> [...] =========> TASK B -> TASK A perf_event_exit_task(tsk) perf_event_exit_event() free_event() WARN(atomic_long_cmpxchg(&event->refcount, 1, 0) != 1) // leak event due to unexpected refcount == 2

As a result the event is never released while the task exits.

Fix this with appropriate task_work_add()'s error handling.

Metrics

CVSS 3.1 5.5/10CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Weakness enumeration

Affected software

VendorProductVersions
LinuxLinux>= 8bffa95ac19ff27c8261904f89d36c7fcf215d59, < 67fad724f1b568b356c1065d50df46e6b30eb2f7; >= 517e6a301f34613bff24a8e35b5455884f2d83d8, < 70882d7fa74f0731492a0d493e8515a4f7131831; >= 517e6a301f34613bff24a8e35b5455884f2d83d8, < 05d3fd599594abf79aad4484bccb2b26e1cb0b51; >= 517e6a301f34613bff24a8e35b5455884f2d83d8, < 3d7a63352a93bdb8a1cdf29606bf617d3ac1c22a; >= 517e6a301f34613bff24a8e35b5455884f2d83d8, < 2fd5ad3f310de22836cdacae919dd99d758a1f1b; 78e1317a174edbfd1182599bf76c092a2877672c; >= 5.15.84, < 5.15.165; >= 6.0.14, < 6.1
LinuxLinux6.1

References

Timeline

Published
Aug 21, 2024
Last modified
Jun 17, 2026
NVD status
Modified

Related CVEs from 2024

CVE-2024-438715.5In the Linux kernel, the following vulnerability has been resolved: devres: Fix memory leakage caused by driver API devm_free_percpu() It CVE-2024-438725.5In the Linux kernel, the following vulnerability has been resolved: RDMA/hns: Fix soft lockup under heavy CEQE load CEQEs are handled in iCVE-2024-438737.8In the Linux kernel, the following vulnerability has been resolved: vhost/vsock: always initialize seqpacket_allow There are two issues arCVE-2024-438745.5In the Linux kernel, the following vulnerability has been resolved: crypto: ccp - Fix null pointer dereference in __sev_snp_shutdown_lockedCVE-2024-438755.5In the Linux kernel, the following vulnerability has been resolved: PCI: endpoint: Clean up error handling in vpci_scan_bus() Smatch complCVE-2024-438765.5In the Linux kernel, the following vulnerability has been resolved: PCI: rcar: Demote WARN() to dev_warn_ratelimited() in rcar_pcie_wakeup(CVE-2024-438777.1In the Linux kernel, the following vulnerability has been resolved: media: pci: ivtv: Add check for DMA map result In case DMA fails, 'dmaCVE-2024-438787.1In the Linux kernel, the following vulnerability has been resolved: xfrm: Fix input error path memory access When there is a misconfiguratCVE-2024-438795.5In the Linux kernel, the following vulnerability has been resolved: wifi: cfg80211: handle 2x996 RU allocation in cfg80211_calculate_bitratCVE-2024-43887.5This does not validate a path generated with user input when downloading files, allowing unauthenticated user to download arbitrary files fCVE-2024-438805.5In the Linux kernel, the following vulnerability has been resolved: mlxsw: spectrum_acl_erp: Fix object nesting warning ACLs in Spectrum-2CVE-2024-438817.1In the Linux kernel, the following vulnerability has been resolved: wifi: ath12k: change DMA direction while mapping reinjected packets Fo