A Linux 6.16-os kernel kiadás hetedik kiadásra jelölt változata újabb, sürgős javítással bővült az ütemező alrendszerben, amelyet Thomas Gleixner küldött el Linus Torvaldsnak. A javítás egyetlen, de fontos módosítást tartalmaz, amely az nr_uninterruptible nevű számláló típusát változtatja meg, hogy elkerülhetők legyenek a hibás terhelési átlag (load average) számítások.
Tartalomjegyzék

Típushiba okozta a terhelési értékek torzulását
A korábbi módosítás során az nr_uninterruptible változó típusát unsigned int típusra állították át. Ez a számláló a megszakításokkal nem megszakítható folyamatok számát tartja nyilván egy adott processzor futási sorában. Ugyanakkor az ilyen típusú feladatokat nem mindig követi a számláló korrekciója, ha azok másik CPU-ra kerülnek át, emiatt egyes CPU-k számlálói túlcsordulhatnak. Ez problémát okozott a terhelési átlag kiszámításánál, mivel a számláló értékét long típusra konvertálták, és így a túl nagy unsigned int értékek negatív long értékké váltak. Ez a rendszer által jelentett load average torzulásához vezetett.
Visszaállítás unsigned longra a stabilitás érdekében
A probléma megoldásaként Aruna Ramakrishna javaslatára az nr_uninterruptible típusát unsigned long típusra módosították, amely nagyobb értéktartománnyal rendelkezik, így csökkentve a túlcsordulás esélyét. A javítást a TIP git-tárolóból vonták be, és ez már része a 6.16-rc7 kernel kiadás előtti véglegesítésnek. A változtatás mindössze két fájlt érintett minimális módosítással, és nem befolyásolja az alrendszer többi részét. Ez a kernel javítás elsősorban a torzított terhelési értékek kiküszöbölését szolgálja, és nem okoz semmilyen kompatibilitási problémát a felhasználói térben.
Linus Torvalds kritikusan reagált a típuskezelésre
Linus Torvalds válaszában elismerte a javítás szükségességét, ugyanakkor rámutatott a típusválasztás körüli koncepcionális problémákra. Megjegyezte, hogy bár a változó típusa mostantól ismét unsigned long, a kód mindenhol long típusra konvertálja, ami kérdésessé teszi, miért nem eleve long típusként lett deklarálva. Szerinte ha a változó ténylegesen tartalmazhat negatív értéket migráció miatt, akkor annak típusának is ezt kellene tükröznie. Felvetette azt is, hogy bár jelenleg ez nem okoz komoly problémát, a típus és a működés közötti ellentmondás hosszú távon zavart okozhat a kódbázis karbantartásában. A hozzászólásában mindemellett hangsúlyozta, hogy a konkrét hibajavítást természetesen elfogadta és beemelte a kernel fő ágába.
