A Linux 6.18 kernel kiadására vasárnap kerülne sor, ám a hét elején rövid időre komoly aggodalom alakult ki a fejlesztők körében. Borislav Petkov, az AMD egyik ismert fejlesztője olyan hibát jelentett, amely már a rendszerindítás legkorábbi szakaszában kernelpánikot idézett elő. A problémát egy régebbi, Phenom II-es processzorra épülő tesztgépen észlelte, amikor a legfrissebb fejlesztői verziót próbálta futtatni. A naplófájlok szerint az ACPI alrendszerben lévő acpi_idle_enter függvény nullmutató-dereferálást végzett, ami azonnali összeomlást okozott.
Tartalomjegyzék

A problémás optimalizálás következményei
A hibajelenség azért is rendkívül kellemetlen, mivel a boot folyamat olyan korai szakaszában következett be, ahol a hibakeresés már eleve nehéz. A részletes visszafejtés azt mutatta, hogy az ACPI processzor-idle kód egyik strukturális elemére, a C-állapotokat leíró cx objektumra a kernel egy nem létező mutatóként hivatkozott, és már az első mezője beolvasásakor összeomlott. Ez azonnal ráirányította a figyelmet azokra a változtatásokra, amelyek a 6.18-as fejlesztési ciklus elején kerültek a kódba.
A hibát sikerült egy korábbi commitra visszavezetni, amely a processzor-idle driver regisztrációját próbálta „letisztultabbá” tenni. A fejlesztői magyarázat szerint a driver korábban egy CPU-hotplug esemény során került regisztrálásra, ami bár nem okozott funkcionális hibát, hosszú távon mégis zavaró és átláthatatlan megoldásnak számított. Az új kód ehelyett azt célozta, hogy a driver akkor aktiválódjon, amikor már minden CPU „életre kelt”. Ez koncepcionálisan helyes iránynak tűnt, egyes rendszereken azonban váratlan mellékhatásokkal járt.
Mint kiderült, az átrendezett inicializáció miatt bizonyos ACPI struktúrák nem voltak még készen arra a pillanatra, amikor a kernel éppen használni próbálta azokat. A cx pointer emiatt maradt üresen, ami aztán az első elérésnél összeomláshoz vezetett. A hiba tehát nem elméleti volt: az érintett rendszer minden indításnál azonnal kernelpánikkal állt le, ami világossá tette, hogy a kiadásközeli verzióból sürgősen el kell távolítani a problémás változtatást.
Sürgős visszavonás segített a kernel újbóli stabilitásának visszaállításában
Rafael Wysocki, a Linux energiamenedzsment alrendszerének karbantartója gyorsan reagált az eseményekre, így egy sürgős pull requestet küldött be Linus Torvaldsnak, amelyben a hibás commit teljes visszavonását javasolta több, kapcsolódó kódtisztítási lépéssel együtt. Mint fogalmazott, az eredeti cél az ACPI processzordriver egyszerűsítése lett volna, ám a gyakorlatban ez egyes hardvereken teljes rendszerösszeomlást okozott, így a módosítás nem maradhat a 6.18-as ágban.
A döntéssel a fejlesztők sikeresen elkerültek egy olyan hibát, amely a vasárnap esedékes stabil kiadásba is becsúszhatott volna. Bár egyelőre csak a Petkov által használt régebbi AMD rendszer esetében igazolt a hiba, a kód kockázatos működése miatt indokolt volt a teljes visszavonás. A javítással most már biztosabbnak tűnik, hogy a Linux 6.18 végleges változata nem egy ilyen korai és súlyos ACPI-összeomlással kerül a felhasználók elé.
