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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-99085— sched_ext: Fix CPU hotplug hang when a dying CPU's tasks sit in the BPF scheduler

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

在 Linux 内核中,以下漏洞已得到修复: sched_ext:修复因即将关闭的 CPU 上的任务滞留在 BPF 调度器中而导致的 CPU 热插拔(hotplug)挂起问题 当一个 CPU 即将关闭时,必须清空其自身的运行队列(rq)。该 CPU 的热插拔线程会在 中等待,直到队列中不再有任何任务;而唤醒该线程的唯一机制是 。该函数在即将关闭的 CPU 上通过 运行,将 CPU 选中的可迁移任务推送出去。 然而, 破坏了这一机制。如果一个任务停留在用户自定义的调度队列(DSQ)中,或被 BPF 调度器持有,它仍会

AI Predicted 7.5 Difficulty: Moderate
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-99085

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
sched_ext: Fix CPU hotplug hang when a dying CPU's tasks sit in the BPF scheduler
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: sched_ext: Fix CPU hotplug hang when a dying CPU's tasks sit in the BPF scheduler A CPU going down has to empty its own rq. Its hotplug thread waits in sched_cpu_wait_empty() until nothing else is left, and the only thing that wakes it is balance_push(), which runs from __schedule() on the dying CPU and pushes off the migratable tasks the CPU picks. sched_ext breaks this. A task sitting on a user DSQ or held by the BPF scheduler is still counted on its rq, but an inactive CPU no longer calls ops.dispatch() and can't pull the task back. The dying CPU goes idle with the task still counted, and one of two things happens: - Another CPU consumes the task. The rq empties without a __schedule() on the dying CPU, so the hotplug thread is never woken and cpu_down() hangs holding cpu_hotplug_lock. - The task is affine only to the dying CPU. Nothing can move it, and the offline stalls until the watchdog ejects the BPF scheduler. When the rq goes offline, re-enqueue every task on it that isn't already on the local DSQ. An enqueue on an offline rq lands on the local DSQ, so the dying CPU itself picks the tasks and balance_push() pushes them off, the same as for the other sched classes. From then on no sched_ext path on another CPU can pull a task off the rq. ops.dispatch() currently stops as soon as the CPU goes inactive, and CPU hotplug then waits for an RCU grace period before taking the rq offline. A BPF-held task affine only to the dying CPU and preempted inside an RCU read-side critical section would block that grace period, and the rq would never go offline. Test SCX_RQ_ONLINE directly so that ops.dispatch() keeps running until the rq goes offline. Only the dying CPU's own hotplug thread clears the flag during teardown, and task_can_run_on_remote_rq() still keeps other rqs' tasks off the CPU.
Source: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux f0e1a0643a59bf1f922fa209cec86a170b784f3f ~ f79cd7a2df3768323fbfb9b0f96adff08fb7eb4c -
Linux Linux 6.12 -

II. Public POCs for CVE-2026-99085

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-99085

请登录查看更多情报信息。

Other References for CVE-2026-99085 (4)

Same Patch Batch · Linux · 2026-10-23 · 218 CVEs total

CVE-2026-98937 perf/core: Check kernel access when kernel callchains are requested
CVE-2026-98950 flow_dissector: avoid u16 truncation of hlen in bpf_flow_dissect()
CVE-2026-98949 drm/imagination: Fix reference and vm_bo handling in remap()
CVE-2026-98948 mlxsw: spectrum_flower: Fix port range register leak in tmplt_create()
CVE-2026-98947 vsock: Fix memory leak in vmci_transport_recv_dgram_cb()
CVE-2026-98946 drm/vc4: Disable the V3D interrupt across runtime suspend
CVE-2026-98945 HID: steam: Rearrange teardown sequence
CVE-2026-98944 HID: steam: Refactor registration
CVE-2026-98943 HID: steam: Clean up locking
CVE-2026-98942 sched_ext: Build the cid tables privately and publish them with RCU
CVE-2026-98941 ext4: don't enable large folios on encrypted inodes
CVE-2026-98940 ASoC: qcom: lpass-cpu: use DAI table index for playback constraints
CVE-2026-98939 x86/mm: Drop unnecessary PMD page copy when freeing
CVE-2026-98938 rust: irq: pass RegistrationInner as cookie to request_irq
CVE-2026-98926 drm/amd/display: Remove sink usage from DPMS
CVE-2026-98929 macsec: initialize SecY before registering the netdevice
CVE-2026-98928 KVM: arm64: Derive GUEST_HAS_SVE from the SVE feature bit at EL2
CVE-2026-98927 KVM: arm64: nv: Fix life cycle of the nested_mmus array
CVE-2026-98930 KVM: s390: Fix IRQ injection with SIGP Stop and Store Status
CVE-2026-98925 bpf, sockmap: Fix self-redirect copied_seq double-counting

Showing top 20 of 218 CVEs. View all on vendor page → →

IV. Related Vulnerabilities

V. Comments for CVE-2026-99085

No comments yet


Leave a comment