Linuxin luoja Linus Torvalds ei kirjoita nykyään niin paljon varsinaista ydinkoodia kuin ennen. Nykyään hän on usein kiireinen valvomassa alkupään ytimen kehitysyhteisöä tarkastelemalla koodia, hallitsemalla julkaisuja ja osallistumalla postituslistakeskusteluihin. Joskus hän kuitenkin likaantuu matalan tason ytimen hakkerointiin, aivan kuten hän on tehnyt nyt Linux 6.5:lle parantamalla käyttäjätilan pinon laajennuskoodia.
Vain 500 rivin koodin uusintatyötä on tarkoitus parantaa käyttäjätilan pinonlaajennusbittejä. Hän selitti yhdistämisessä:
Tämä muuttaa käyttäjätilan pinon laajennuskoodia niin, että se käyttää aina mmap_lockia kirjoitettaessa ennen VM-asettelun muokkaamista.
Se on itse asiassa jotain, mitä meidän olisi aina teknisesti pitänyt tehdä, mutta koska emme ehdottomasti tarvinneet sitä, olimme laiskoja (“opportunistinen”kuulostaa niin paljon paremmalta, eikö niin?) asioiden suhteen ja saimme tämän hakkerin. paikka, jossa jatkaisimme pinoa vma paikallaan tekemättä kunnollista lukitusta.
Ja se toimi hyvin. Meidän piti vain muuttaa vm_start (tai kasvupinojen tapauksessa vm_end) ja yhdessä erikoisen ad-hoc-lukituksen kanssa anon_vma-lukon ja mm->page_table_lockin avulla kaikki oli melko suoraviivaista.
Toisin sanoen kaikki oli hyvin Ruihaniin asti Li huomautti, että nyt, kun vma-asettelu käyttää vaahterapuukoodia, emme *todella* muuta vain vm_start ja vm_end enää, ja lukitus on todella rikki. Oho.
Ei todellakaan ole _niin_ kamalaa korjata tämä kerta kaikkiaan ja tehdä kunnollinen lukitus, mutta se on hieman tuskallista. Meillä on pohjimmiltaan kolme erilaista pinon laajennustapausta, ja ne kaikki toimivat hieman eri tavalla.
Linux 6.5:ssä tämä pitäisi nyt ratkaista, kiitos Linus Torvaldsin, joka ottaa itse koodaushaasteen. Lisätietoja yhdistämisestä.