CVE-2026-93182

sched/fair: Fix overflow in update_tg_cfs_runnable()

State
Published
Severity
Not scored
Published
Sep 17, 2026
Updated
Oct 19, 2026
Reserved
Sep 17, 2026

Read the record on cve.org

Description

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

sched/fair: Fix overflow in update_tg_cfs_runnable()

A divide-by-zero crash is observed when running hackbench:

[14697.488452] CPU: 112 UID: 0 PID: 124791 Comm: hackbench Not tainted 7.1.0-rc2+ [14697.492627] RIP: 0010:propagate_entity_load_avg+0x35f/0x3e0 [14697.506799] <TASK> [14697.507411] __dequeue_task+0x2b4/0xc70 [14697.508677] dequeue_task_fair+0x36/0x370 [14697.509047] dequeue_task+0x101/0x2f0 [14697.509426] __schedule+0x1b1/0x1a00 [14697.510868] anon_pipe_read+0x3da/0x450 [14697.511400] vfs_read+0x361/0x390 [14697.512053] __x64_sys_read+0x19/0x30

The divide-by-zero happens here:

if (scale_load_down(gcfs_rq->load.weight)) { load_sum = div_u64(gcfs_rq->avg.load_sum, scale_load_down(gcfs_rq->load.weight)); }

gcfs_rq->load.weight is an insane large value and is truncated to the lower 32 bits by div_u64, which happen to be 0.

Using AI for investigation, the cause is a u32 overflow in update_tg_cfs_runnable(), and flat pickup became a victim when using tg_tasks():

u32 new_sum, divider; ... new_sum = se->avg.runnable_avg * divider; <-- boom

The following sequence shows how this triggers the crash:

propagate_entity_load_avg() update_tg_cfs_runnable() # u32 overflow corrupts runnable_sum

__update_load_avg_cfs_rq() ___update_load_avg() # computes insane runnable_avg update_tg_load_avg() # propagates to tg->runnable_avg

update_cfs_group() calc_concur_shares() tg_tasks() # long-to-int truncation, negative nr reweight_entity() # corrupted se->load.weight update_load_add() # corrupted cfs_rq->load.weight

propagate_entity_load_avg() update_tg_cfs_load() div_u64() # divide-by-zero

Fix by widening new_sum from u32 to u64 (no need to force tg_tasks() to return unsigned long after this fix)

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 95246d1ec80b8d19d882cd8eb7ad094e63b41bb8 to before 39d707097a0820c6e87eff4195f0940e8ff1147eAffected
  • 95246d1ec80b8d19d882cd8eb7ad094e63b41bb8 to before 69fafae4eb2c9fc9bcff1bcbfcccf5d197434d75Affected
  • 95246d1ec80b8d19d882cd8eb7ad094e63b41bb8 to before 7cc237e3bc1733928313d2462b413ae441b0eef3Affected
  • 95246d1ec80b8d19d882cd8eb7ad094e63b41bb8 to before 18fdd0978ec3dda0ff6865cd273e47e022180710Affected
  • 95246d1ec80b8d19d882cd8eb7ad094e63b41bb8 to before f94e62d21faad5e244d0874598a4d0ebbc0ea405Affected
  • 95246d1ec80b8d19d882cd8eb7ad094e63b41bb8 to before 4f166adb5cb0525d9e32d45729fd8f28c80acbeeAffected
LinuxLinux
  • 5.17Affected
  • before 5.17Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.110 through 6.12.*Not affected
  • 6.18.52 through 6.18.*Not affected
  • 7.2.6 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.