VYPR
Unrated severityNVD Advisory· Published Dec 23, 2025· Updated Apr 15, 2026

CVE-2025-68339

CVE-2025-68339

Description

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

atm/fore200e: Fix possible data race in fore200e_open()

Protect access to fore200e->available_cell_rate with rate_mtx lock in the error handling path of fore200e_open() to prevent a data race.

The field fore200e->available_cell_rate is a shared resource used to track available bandwidth. It is concurrently accessed by fore200e_open(), fore200e_close(), and fore200e_change_qos().

In fore200e_open(), the lock rate_mtx is correctly held when subtracting vcc->qos.txtp.max_pcr from available_cell_rate to reserve bandwidth. However, if the subsequent call to fore200e_activate_vcin() fails, the function restores the reserved bandwidth by adding back to available_cell_rate without holding the lock.

This introduces a race condition because available_cell_rate is a global device resource shared across all VCCs. If the error path in fore200e_open() executes concurrently with operations like fore200e_close() or fore200e_change_qos() on other VCCs, a read-modify-write race occurs.

Specifically, the error path reads the rate without the lock. If another CPU acquires the lock and modifies the rate (e.g., releasing bandwidth in fore200e_close()) between this read and the subsequent write, the error path will overwrite the concurrent update with a stale value. This results in incorrect bandwidth accounting.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

In fore200e_open(), the error path modifies available_cell_rate without holding the rate_mtx lock, causing a data race that corrupts bandwidth tracking.

Root

Cause

The fore200e_open() function in the Linux kernel's ATM Fore 200e driver correctly acquires the rate_mtx lock when subtracting the new VCC's max_pcr from available_cell_rate to reserve bandwidth. However, if the subsequent call to fore200e_activate_vcin() fails, the error restoration path adds the value back to available_cell_rate without taking the lock. The field available_cell_rate is a shared device resource concurrently accessed by fore200e_open(), fore200e_close(), and fore200e_change_qos() [description].

Exploitation and

Attack Surface

The race can be triggered when an error occurs in fore200e_open() returning from a failed fore200e_activate_vcin() call. If another CPU simultaneously executes fore200e_close() or fore200e_change_qos() for a different VCC and holds rate_mtx, the lock-free read-modify-write in the error path will read a stale value and then overwrite the legitimate update made under the lock. This is a classic TOCTOU (time-of-check-time-of-use) race on the shared variable.

Impact

A successful race results in incorrect bandwidth accounting for the ATM device. available_cell_rate may become inaccurate (e.g., too high or too low), potentially allowing further VCC openings to exceed limits or preventing legitimate VCCs from obtaining the bandwidth they need. In extreme cases, this could lead to denial of service or incorrect QoS enforcement.

Mitigation

Status

The fix has been applied in the stable kernel tree as commit ed34c70d88e2 [1], with additional backports also available [2][3][4]. Users should update their Linux kernel to a version containing these patches. No workaround is available other than applying the kernel fix.

AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

7

News mentions

0

No linked articles in our index yet.