CVE-2026-74405: OPP: Fix race between OPP addition and lookup
In the Linux kernel, the following vulnerability has been resolved:
OPP: Fix race between OPP addition and lookup
A race exists between devpmoppadddynamic() and devpmoppfindfreqexact():
CPU0 (add) CPU1 (lookup) ------------------------------- ------------------------------ oppadd() mutexlock() listadd(&newopp->node, head) mutexunlock() opptablefindkey() mutexlock() devpmoppget(opp) krefget() mutexunlock() krefinit(&newopp->kref) devpmoppput() krefputmutex()
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 ->opptable before making the OPP visible via listadd(). This ensures any concurrent lookup observes a fully initialized object.
[ Viresh: Updated commit log ]