CVE-2025-38614

eventpoll: Fix semi-unbounded recursion

MEDIUM
5.5
CVSS Score
Published: August 19, 2025 at 05:03 PM UTC
Updated: October 15, 2026 at 10:18 PM UTC
6 products affected across 3 vendorsLinux KernelDebian LinuxSIMATIC S7-1500 CPU 1518-4 Pn /dp MFP Firmware

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: eventpoll: Fix semi-unbounded recursion Ensure that epoll instances can never form a graph deeper than EP_MAX_NESTS+1 links. Currently, ep_loop_check_proc() ensures that the graph is loop-free and does some recursion depth checks, but those recursion depth checks don't limit the depth of the resulting tree for two reasons: - They don't look upwards in the tree. - If there are multiple downwards paths of different lengths, only one of the paths is actually considered for the depth check since commit 28d82dc1c4ed ("epoll: limit paths"). Essentially, the current recursion depth check in ep_loop_check_proc() just serves to prevent it from recursing too deeply while checking for loops. A more thorough check is done in reverse_path_check() after the new graph edge has already been created; this checks, among other things, that no paths going upwards from any non-epoll file with a length of more than 5 edges exist. However, this check does not apply to non-epoll files. As a result, it is possible to recurse to a depth of at least roughly 500, tested on v6.15. (I am unsure if deeper recursion is possible; and this may have changed with commit 8c44dac8add7 ("eventpoll: Fix priority inversion problem").) To fix it: 1. In ep_loop_check_proc(), note the subtree depth of each visited node, and use subtree depths for the total depth calculation even when a subtree has already been visited. 2. Add ep_get_upwards_depth_proc() for similarly determining the maximum depth of an upwards walk. 3. In ep_loop_check(), use these values to limit the total path length between epoll nodes to EP_MAX_NESTS edges.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2.6.32.30 ≤ v < 2.6.332.6.33.8 ≤ v < 2.6.342.6.34.10 ≤ v < 2.6.352.6.35.12 ≤ v < 2.6.362.6.37.3 ≤ v < 2.6.382.6.38.1 ≤ v < 5.15.1905.16 ≤ v < 6.1.1496.13 ≤ v < 6.15.116.16 ≤ v < 6.16.16.2 ≤ v < 6.6.1036.7 ≤ v < 6.12.430eccd188cfeaf857a26f2d72941d27d298cf6a542.6.32.302.6.33.82.6.34.102.6.35.122.6.37.32.6.382.6.38 rc72.6.38 rc822bacca48a1755f79b7e0f192ddb9fbb7fc6e64e28a92748aa4bc57d35e7b079498b0ac2e7610a377eebcd4792c5a341559aed327b6afecbb1c464028216e1a0d47cae06a75c42346f19dffe14e42d57a72affdbb09f3f24f64ffcbbdf62c2e57c58f379
Vendor states this is fixed in 1b13b033062824495554e836a1ff5f85ccf6b039 (fixed)
Vendor states this is fixed in 2a0c0c974bea9619c6f41794775ae4b97530e0e6 (fixed)
Vendor states this is fixed in 3542c90797bc3ab83ebab54b737d751cf3682036 (fixed)
Vendor states this is fixed in 71379495ab70eaba19224bd71b5b9b399eb85e04 (fixed)
Vendor states this is fixed in 7a2125962c42d5336ca0495a9ce4cb38a63e9161 (fixed)
Vendor states this is fixed in ea5f97dbdcb1651581a22bd10afd2f0dd9dc11d6 (fixed)
Vendor states this is fixed in f2e467a48287c868818085aa35389a224d226732 (fixed)
Affected range stops below 2.6.33, so it looks safe — our inference, not a vendor statement
Affected range stops below 2.6.34, so it looks safe — our inference, not a vendor statement
Affected range stops below 2.6.35, so it looks safe — our inference, not a vendor statement
Affected range stops below 2.6.36, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 2.6.38 (unaffected)
Vendor states this is fixed in 5.15.190 (unaffected)
Vendor states this is fixed in 6.1.149 (unaffected)
Vendor states this is fixed in 6.12.43 (unaffected)
Vendor states this is fixed in 6.15.11 (unaffected)
Vendor states this is fixed in 6.16.1 (unaffected)
Vendor states this is fixed in 6.17 (unaffected)
Vendor states this is fixed in 6.6.103 (unaffected)
v < V5.0
Affected range stops below V5.0, so it looks safe — our inference, not a vendor statement

References (12)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/1b13b033062824495554e836a1ff5f85ccf6b039
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/2a0c0c974bea9619c6f41794775ae4b97530e0e6
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/3542c90797bc3ab83ebab54b737d751cf3682036
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/71379495ab70eaba19224bd71b5b9b399eb85e04
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/7a2125962c42d5336ca0495a9ce4cb38a63e9161
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/ea5f97dbdcb1651581a22bd10afd2f0dd9dc11d6
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/f2e467a48287c868818085aa35389a224d226732
Third Party Advisory
Source: af854a3a-2127-422b-91ae-364da2661108
https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html

SSVC — Action Prioritization

SSVCNo known exploitNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-674

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card