CVE-2024-35977

platform/chrome: cros_ec_uart: properly fix race condition

MEDIUM
4.7
CVSS Score
Published: May 20, 2024 at 09:42 AM UTC
Updated: June 17, 2026 at 07:35 AM UTC
1 product affected across 1 vendorLinux Kernel

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
MEDIUM4.7
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: platform/chrome: cros_ec_uart: properly fix race condition The cros_ec_uart_probe() function calls devm_serdev_device_open() before it calls serdev_device_set_client_ops(). This can trigger a NULL pointer dereference: BUG: kernel NULL pointer dereference, address: 0000000000000000 ... Call Trace: <TASK> ... ? ttyport_receive_buf A simplified version of crashing code is as follows: static inline size_t serdev_controller_receive_buf(struct serdev_controller *ctrl, const u8 *data, size_t count) { struct serdev_device *serdev = ctrl->serdev; if (!serdev || !serdev->ops->receive_buf) // CRASH! return 0; return serdev->ops->receive_buf(serdev, data, count); } It assumes that if SERPORT_ACTIVE is set and serdev exists, serdev->ops will also exist. This conflicts with the existing cros_ec_uart_probe() logic, as it first calls devm_serdev_device_open() (which sets SERPORT_ACTIVE), and only later sets serdev->ops via serdev_device_set_client_ops(). Commit 01f95d42b8f4 ("platform/chrome: cros_ec_uart: fix race condition") attempted to fix a similar race condition, but while doing so, made the window of error for this race condition to happen much wider. Attempt to fix the race condition again, making sure we fully setup before calling devm_serdev_device_open().

Affected

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

6.3 ≤ v < 6.6.286.3 ≤ v < 6.8.76.3 ≤ v < 6.96.7 ≤ v < 6.8.71f95d42b8f4e88f20d68791b0a85dbb9e3d1ac96.9 rc16.9 rc26.9 rc3
Vendor states this is fixed in 5e700b384ec13f5bcac9855cb28fcc674f1d3593 (fixed)
Vendor states this is fixed in 9e9bb74a93b7daa32313ccaefd0edc529d40daf8 (fixed)
Vendor states this is fixed in cfd758041d8b79aa8c3f811b6bd6105379f2f702 (fixed)
Vendor states this is fixed in 6.3 (unaffected)
Vendor states this is fixed in 6.6.28 (unaffected)
Vendor states this is fixed in 6.8.7 (unaffected)
Vendor states this is fixed in 6.9 (unaffected)

References (3)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/5e700b384ec13f5bcac9855cb28fcc674f1d3593
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/9e9bb74a93b7daa32313ccaefd0edc529d40daf8
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/cfd758041d8b79aa8c3f811b6bd6105379f2f702

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

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

CVSS

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

Quick Info

StatusANALYZED
CWE
CWE-362CWE-476

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