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

OPP: Fix race between OPP addition and lookup

A race exists between dev_pm_opp_add_dynamic() and
dev_pm_opp_find_freq_exact():

CPU0 (add) CPU1 (lookup)
------------------------------- ------------------------------
_opp_add()
mutex_lock()
list_add(&new_opp->node, head)
mutex_unlock() _opp_table_find_key()
mutex_lock()
dev_pm_opp_get(opp)
kref_get()
mutex_unlock()
kref_init(&new_opp->kref)
dev_pm_opp_put()
kref_put_mutex()

The newly added OPP is inserted into the list before its kref is
initialized. A concurrent lookup can find this OPP and increment its
reference count while it is still uninitialized, leading to refcount
corruption and a potential premature free.

Fix this by initializing ->kref and ->opp_table before making the OPP
visible via list_add(). This ensures any concurrent lookup observes a
fully initialized object.

[ Viresh: Updated commit log ]
Published: 2026-08-15
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises from an improper synchronization between the addition of dynamic operating performance points (OPPs) and their lookup. When dev_pm_opp_add_dynamic inserts a new OPP into the list before initializing its reference count, an overlapping lookup can access the partially constructed object, incrementing an uninitialized counter and causing corruption. If the corrupted counter leads to a premature free, the kernel may experience memory corruption. This flaw is an example of an internal race condition and potential double‑release behaviour.

Affected Systems

The bug is present in every Linux kernel build that predates the inclusion of three specific commits (46696b0b…, bb75bd7d…, f5e1cc9a…), which adjust the order of initialization and insertion for OPPs. Systems running any kernel version that does not incorporate these patches—i.e., any build before the commit set—are vulnerable. Linux kernel is the affected product.

Risk and Exploitability

This vulnerability has a CVSS score of 7.8 and an EPSS of less than 1%, and it is not listed in the CISA KEV catalog. The low EPSS indicates a rare exploitation likelihood, but the high CVSS suggests significant potential damage if exploited. The likely attack vector is local or privileged access that can trigger concurrent OPP operations; this is inferred from the description. No documented exploits have been reported, but the internal nature of the flaw could lead to kernel instability if exploited.

Generated by OpenCVE AI on August 22, 2026 at 02:35 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a release that includes the commit changes fixing the OPP race.
  • If a distribution update is not yet available, apply the three specified commits to the kernel source and rebuild.
  • Reboot the system after installation to ensure the updated kernel is used.
  • Optionally, enable kernel debug options such as BUG_ON or lockdep to alert you to reference‑count anomalies while the transition is in progress.

Generated by OpenCVE AI on August 22, 2026 at 02:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 22 Aug 2026 00:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Wed, 19 Aug 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-911
References
Metrics threat_severity

None

threat_severity

Moderate


Mon, 17 Aug 2026 14:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Mon, 17 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-415

Mon, 17 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Sat, 15 Aug 2026 16:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-415

Sat, 15 Aug 2026 06:15:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: OPP: Fix race between OPP addition and lookup A race exists between dev_pm_opp_add_dynamic() and dev_pm_opp_find_freq_exact(): CPU0 (add) CPU1 (lookup) ------------------------------- ------------------------------ _opp_add() mutex_lock() list_add(&new_opp->node, head) mutex_unlock() _opp_table_find_key() mutex_lock() dev_pm_opp_get(opp) kref_get() mutex_unlock() kref_init(&new_opp->kref) dev_pm_opp_put() kref_put_mutex() The newly added OPP is inserted into the list before its kref is initialized. A concurrent lookup can find this OPP and increment its reference count while it is still uninitialized, leading to refcount corruption and a potential premature free. Fix this by initializing ->kref and ->opp_table before making the OPP visible via list_add(). This ensures any concurrent lookup observes a fully initialized object. [ Viresh: Updated commit log ]
Title OPP: Fix race between OPP addition and lookup
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-17T05:46:47.595Z

Reserved: 2026-08-15T05:44:03.892Z

Link: CVE-2026-74405

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T06:22:42.530

Modified: 2026-08-17T06:19:35.740

Link: CVE-2026-74405

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-74405 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T02:45:03Z

Weaknesses
  • CWE-911

    Improper Update of Reference Count