CVE-2026-74405

Summary

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 ]

Affected Software

VendorProductVersion RangeStatus
LinuxLinux7034764a1e4a6edbb60914e89aad8384e3fe5d17 < 46696b0b2123475d7f95909435c09808fc5ffd23affected
LinuxLinux7034764a1e4a6edbb60914e89aad8384e3fe5d17 < bb75bd7d9ae7672034f73ce67a57e6ac89bb39e5affected
LinuxLinux7034764a1e4a6edbb60914e89aad8384e3fe5d17 < f5e1cc9a284bff2510981643a5bca4bc4c21b81aaffected
LinuxLinux4.11affected
LinuxLinux0 < 4.11unaffected
LinuxLinux6.18.40 <= 6.18.*unaffected
LinuxLinux7.1.5 <= 7.1.*unaffected
LinuxLinux7.2-rc1 <= *unaffected

Weaknesses

References