CVE-2026-72314
WysokieCVSS 7.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
W jądrze Linuxa w funkcji regulator_lock_two() porównywany jest kod błędu z -EDEADLOCK zamiast -EDEADLK. Na architekturach MIPS, SPARC i PowerPC wartości te się różnią, co powoduje, że przy rzeczywistym odblokowaniu i ponowieniu próby kod trafia do WARN_ON i zwraca z tylko jednym zablokowanym regulatorem. W praktyce błąd występuje tylko na MIPS, ponieważ regulator core nie jest tam budowany ani używany.
Ocena ryzyka
Może to prowadzić do nieprawidłowego działania regulatorów napięcia na platformach MIPS, co może skutkować awariami systemu lub niestabilnością zasilania.
Rekomendacja
Zastosuj poprawkę z jądra Linuxa, która zmienia porównanie na -EDEADLK, aby zapewnić poprawne odblokowanie i ponowienie próby.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: regulator: core: regulator_lock_two() should test for EDEADLK not EDEADLOCK Compare against -EDEADLK, which is what ww_mutex_lock() actually returns and what every other deadlock check in this file already uses. Function regulator_lock_two() acquires two regulators via regulator_lock_nested() -> ww_mutex_lock(). On contention, ww_mutex_lock() returns -EDEADLK, which is the caller's signal to drop the lock it holds and retry the acquisition in the canonical order. However, regulator_lock_two() tests the return value against -EDEADLOCK rather than -EDEADLK. On most architectures, EDEADLK and EDEADLOCK are the same value, so the comparison happens to be correct and the bug is invisible. But on MIPS, SPARC, and PowerPC, those two errors have different values. The test is wrong: a genuine -EDEADLK backoff no longer matches -EDEADLOCK, so instead of unlocking and retrying, the code falls into WARN_ON(ret) and returns with only one of the two regulators locked. In practice, this is a bug only on MIPS, because the regulator core is not built or used on the other two platforms. In general, EDEADLK is preferred over EDEADLOCK for new code.

