Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-39821— perf: Avoid undefined behavior from stopping/starting inactive events

EPSS 0.03% · P7

Affected Version Matrix 6

VendorProductVersion RangeStatus
LinuxLinux9734e25fbf5ae68eb04234b2cd14a4b36ab89141< d689135aa9c5e4e0eab5a92bbe35dab0c8d6677faffected
9734e25fbf5ae68eb04234b2cd14a4b36ab89141< b64fdd422a85025b5e91ead794db9d3ef970e369affected
6.16affected
< 6.16unaffected
6.16.5≤ 6.16.*unaffected
6.17≤ *unaffected
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2025-39821

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
perf: Avoid undefined behavior from stopping/starting inactive events
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: perf: Avoid undefined behavior from stopping/starting inactive events Calling pmu->start()/stop() on perf events in PERF_EVENT_STATE_OFF can leave event->hw.idx at -1. When PMU drivers later attempt to use this negative index as a shift exponent in bitwise operations, it leads to UBSAN shift-out-of-bounds reports. The issue is a logical flaw in how event groups handle throttling when some members are intentionally disabled. Based on the analysis and the reproducer provided by Mark Rutland (this issue on both arm64 and x86-64). The scenario unfolds as follows: 1. A group leader event is configured with a very aggressive sampling period (e.g., sample_period = 1). This causes frequent interrupts and triggers the throttling mechanism. 2. A child event in the same group is created in a disabled state (.disabled = 1). This event remains in PERF_EVENT_STATE_OFF. Since it hasn't been scheduled onto the PMU, its event->hw.idx remains initialized at -1. 3. When throttling occurs, perf_event_throttle_group() and later perf_event_unthrottle_group() iterate through all siblings, including the disabled child event. 4. perf_event_throttle()/unthrottle() are called on this inactive child event, which then call event->pmu->start()/stop(). 5. The PMU driver receives the event with hw.idx == -1 and attempts to use it as a shift exponent. e.g., in macros like PMCNTENSET(idx), leading to the UBSAN report. The throttling mechanism attempts to start/stop events that are not actively scheduled on the hardware. Move the state check into perf_event_throttle()/perf_event_unthrottle() so that inactive events are skipped entirely. This ensures only active events with a valid hw.idx are processed, preventing undefined behavior and silencing UBSAN warnings. The corrected check ensures true before proceeding with PMU operations. The problem can be reproduced with the syzkaller reproducer:
Source: NVD (National Vulnerability Database)
CVSS Information
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Type
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于对非活动事件执行停止或启动操作时未正确处理事件状态,可能导致未定义行为。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux 9734e25fbf5ae68eb04234b2cd14a4b36ab89141 ~ d689135aa9c5e4e0eab5a92bbe35dab0c8d6677f -
LinuxLinux 6.16 -

II. Public POCs for CVE-2025-39821

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-39821

登录查看更多情报信息。

Same Patch Batch · Linux · 2025-09-16 · 115 CVEs total

CVE-2022-50340media: vimc: Fix wrong function called when vimc_init() fails
CVE-2023-53307rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails
CVE-2023-53305Bluetooth: L2CAP: Fix use-after-free
CVE-2023-53304netfilter: nft_set_rbtree: fix overlap expiration walk
CVE-2022-50351cifs: Fix xid leak in cifs_create()
CVE-2022-50352net: hns: fix possible memory leak in hnae_ae_register()
CVE-2022-50350scsi: target: iscsi: Fix a race condition between login_work and the login thread
CVE-2022-50348nfsd: Fix a memory leak in an error handling path
CVE-2022-50349misc: tifm: fix possible memory leak in tifm_7xx1_switch_media()
CVE-2022-50347mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host()
CVE-2022-50346ext4: init quota for 'old.inode' in 'ext4_rename'
CVE-2022-50343rapidio: fix possible name leaks when rio_add_device() fails
CVE-2022-50344ext4: fix null-ptr-deref in ext4_write_info
CVE-2022-50342floppy: Fix memory leak in do_floppy_init()
CVE-2022-50341cifs: fix oops during encryption
CVE-2025-39827net: rose: include node references in rose_neigh refcount
CVE-2025-39830net/mlx5: HWS, Fix memory leak in hws_pool_buddy_init error path
CVE-2025-39829trace/fgraph: Fix the warning caused by missing unregister notifier
CVE-2025-39828atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control().
CVE-2025-39831fbnic: Move phylink resume out of service_task and into open/close

Showing top 20 of 115 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2025-39821

No comments yet


Leave a comment