Linus Torvalds, a Linux alkotója manapság nem ír annyi tényleges kernelkódot, mint korábban. Manapság gyakran azzal van elfoglalva, hogy felügyelje az upstream kernelfejlesztő közösséget a kód áttekintésével, a kiadások kezelésével és a levelezőlisták vitáival. Egyszer-egyszer azonban bemocskolja az alacsony szintű kernel-hackelést, ahogyan most tette a Linux 6.5-nél a felhasználói módú verem-bővítő kód fejlesztésével.

Az 500 sornyi kód átdolgozása a felhasználói módú verembővítési bitek javítására szolgál. Az egyesítés során kifejtette:

Ez úgy módosítja a felhasználói módú verembővítő kódunkat, hogy a virtuális gép elrendezésének módosítása előtt mindig az mmap_lockot használja az íráshoz.

Tulajdonképpen ez olyasmi, amit technikailag mindig meg kellett volna tennünk, de mivel nem volt rá feltétlenül szükségünk, lusták voltunk (az „opportunista” sokkal jobban hangzik, nem igaz?), és betörtük ezt a feltörést. olyan hely, ahol a verem vma-t a helyén meghosszabbítanánk a megfelelő zárolás nélkül.

És jól működött. Csak meg kellett változtatnunk a vm_start (vagy a felnõtt stackek esetében a vm_end-et), és néhány speciális ad-hoc zárolással együtt az anon_vma lock és az mm->page_table_lock segítségével, mindez elég egyszerû volt.

Azaz Ruihanig minden rendben volt Li rámutatott, hogy most, hogy a vma elrendezés a juharfa kódot használja, *tényleg* nem csak a vm_start és a vm_end módosítását végezzük, és a zárolás valóban megszakadt. Hoppá.

Tulajdonképpen nem _annyi_ szörnyű ezt egyszer s mindenkorra megjavítani, és megfelelő zárást végezni, de egy kicsit fájdalmas. Alapvetően három különböző verembővítési esetünk van, és mindegyik egy kicsit másképp működik.

A Linux 6.5 esetében ezt most meg kell oldani, köszönhetően annak, hogy Linus Torvalds maga vállalta a kódolási kihívást. További részletek az egyesítésben.

Categories: IT Info