CVE-2026-31423
Description
In the Linux kernel, the following vulnerability has been resolved:
net/sched: sch_hfsc: fix divide-by-zero in rtsc_min()
m2sm() converts a u32 slope to a u64 scaled value. For large inputs (e.g. m1=4000000000), the result can reach 2^32. rtsc_min() stores the difference of two such u64 values in a u32 variable dsm and uses it as a divisor. When the difference is exactly 2^32 the truncation yields zero, causing a divide-by-zero oops in the concave-curve intersection path:
Oops: divide error: 0000 RIP: 0010:rtsc_min (net/sched/sch_hfsc.c:601) Call Trace: init_ed (net/sched/sch_hfsc.c:629) hfsc_enqueue (net/sched/sch_hfsc.c:1569) [...]
Widen dsm to u64 and replace do_div() with div64_u64() so the full difference is preserved.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A divide-by-zero bug in the Linux kernel's HFSC scheduler (rtsc_min) can be triggered with specific traffic parameters, causing a system crash.
Root
Cause
The vulnerability is a divide-by-zero bug present in the rtsc_min() function of the Linux kernel's Hierarchical Fair Service Curve (HFSC) packet scheduler (net/sched/sch_hfsc.c). The root cause stems from a type-width mismatch in the m2sm() helper, which converts a u32 slope value to a u64 scaled value. For large inputs (e.g., m1=4000000000), the result can reach 2^32. In rtsc_min(), the difference of two such u64 values is stored in a u32 variable dsm. When that difference is exactly 2^32, truncation yields zero, leading to a division-by-zero when used as a divisor in the concave-curve intersection computation [1].
Exploitation
Prerequisites
An attacker can trigger the divide-by-zero by creating a traffic class with carefully crafted HFSC service curve parameters (specifically a large m1 value). This requires the ability to configure traffic control (tc) rules on the system, which typically needs either root privileges or CAP_NET_ADMIN capability. No network access is required beyond local configuration ability [1].
Impact
Successful exploitation causes an immediate kernel oops (divide error) in the rtsc_min function, leading to a denial of service (DoS). The crash trace indicates the fault propagates through init_ed and hfsc_enqueue, effectively disabling the HFSC scheduler and potentially crashing the entire system [1].
Mitigation
Status The fix is available in the Linux kernel stable tree as commit d0aefec1b1a1 [1]. This patch widens dsm to u64 and replaces the do_div() macro with div64_u64(), preserving the full 64-bit difference and preventing the division by zero. System administrators should apply the corresponding kernel update for their distribution [1][2][3][4].
AI Insight generated on May 20, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Patches
0No patches discovered yet.
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
8- git.kernel.org/stable/c/17c1b9807b8a67d676b6dcf749ee932ebaa7f568nvdPatch
- git.kernel.org/stable/c/25b6821884713a31e2b49fb67b0ebd765b33e0a9nvdPatch
- git.kernel.org/stable/c/4576100b8cd03118267513cafacde164b498b322nvdPatch
- git.kernel.org/stable/c/ab1ff5890c7354afc7be56502fcfbd61f3b7ae4fnvdPatch
- git.kernel.org/stable/c/ad8e8fec40290a8c8cf145c0deaadf76f80c5163nvdPatch
- git.kernel.org/stable/c/b9e6431cbea8bb1fae8069ed099b4ee100499835nvdPatch
- git.kernel.org/stable/c/c56f78614e7781aaceca9bd3cb2128bf7d45c3bdnvdPatch
- git.kernel.org/stable/c/d0aefec1b1a1ba2c1d251028dc2c4e5b4ce1fea5nvdPatch
News mentions
1- Patch Tuesday - April 2026Rapid7 Blog · Apr 14, 2026