Katastrofalen hrošč v Linuxovem jedru 5.12-rc1 žrl podatke

Matej Huš

9. mar 2021 ob 22:40:22

Minuli teden se je pokazalo, da obstajajo zelo utemeljeni razlogi, da testnih verzij programske opreme, četudi nosi oznako rc (release candidate), ni modro uporabljati na produkcijskih sistemih. V nedeljo, 28. februarja, je Linus Torvalds izdal prvo verzijo rc Linuxovega jedra 5.12, kar je po navadi precej dolgočasen dogodek. Če se v verziji rc najdejo kakšni večji hrošči, se ti popravijo in izide naslednja verzija rc, sicer postane verzija končna. To pot pa je imelo jedro 5.12-rc1 katastrofalnega hrošča.

Težava je bila tako resna, da je jedro dobilo oznako 5.12-rc1-dontuse, Torvalds pa je izrecno odsvetoval uporabo in hrošča označil kot double ungood. V kodo se je ob čiščenju prikradel na prvi pogled nenevaren hrošč, ki je okvaril delovanje izmenjalnih datotek (swap). Po navadi se v Linuxu v ta namen uporablja ločena particija (swap partition), ki je hrošč ne prizadene, zato ga niso odkrili takoj. Kdor pa uporablja datoteke za swap, mu bo hrošč pojedel podatke na disku. Zaradi hrošča bo operacijski sistem zapisoval podatke iz prepolnega polnilnika na naključna mesta na disku in ne v datoteko swap. Rezultat je razsut datotečni sistem, kar lahko okvari vse datoteke na isti particiji.

Torvalds je ob tem spomnil, da so bile doslej verzije rc dovolj stabilne, da so jih ljudje čedalje pogosteje uporabljali, čeprav gre še vedno za testno kodo. Popravek je sledil v nekaj dneh. Zaradi hrošča je nova verzija rc2 izšla predčasno.