Terwijl Linus Torvalds tegenwoordig vooral bezig is met het binnenhalen van nieuwe code in de Linux-kernel en een poortwachter is in plaats van zelf actief nieuwe kernelcode te ontwikkelen, merkte hij dat hij voor de in ontwikkeling zijnde Linux 6.4 een beetje aan het coderen was.
Zoals vorige week opgemerkt, heeft hij persoonlijk de x86-geheugenkopieercode voor Linux 6.4 opgeschoond. Deze week heeft hij meer van zijn eigen code samengevoegd, omdat hij problemen had met een deel van de code die door Intel-technici was samengevoegd als onderdeel van het inschakelen van Linear Address Masking.
Tijdens de Linux 6.2-dagen eind vorig jaar verwierp Linus destijds de Intel LAM-code vanwege verschillende technische problemen. Intel herwerkte het vervolgens voor Linux 6.4.
Deze keer fuseerde Linus met Intel LAM in Linux 6.4 als deze nieuwe CPU-functie om gebruikersruimte metadata te laten opslaan binnen enkele bits van pointers zonder deze voor gebruik te maskeren. Intel LAM kan-net als Arm TBI-nuttig zijn voor virtuele machines, profilering/sanitizers/tagging en andere toepassingen. Maar deze keer was er wat minder dan ideale code die hij persoonlijk gebruikte om op te fleuren.
Linus schreef in een nieuwe samenvoeging op vrijdag:
Mijn x86 uaccess updates branch samenvoegen.
De LAM (“Linear Address Masking”) updates in deze release maakten me ontevreden over hoe”access_ok()”was gedaan, en er bleken ook een paar kleine bugs in te zitten. Dit is mijn opschoning van de code:
-gebruik het tekenbit van de __user-aanwijzer in plaats van het adres te maskeren en te vergelijken met het TASK_SIZE-bereik.
We hebben dit deel al gedaan voor de get/put_user()-kant, maar’access_ok()’deed het naïeve”masker-en bereikcontrole”, dat niet alleen vervelende code genereert, maar uiteindelijk ook betekenis heeft dat __access_ok zelf het niet goed deed, en dus kreeg copy_from_user_nmi() de controle niet goed.
-verplaats alle code die alleen 64-bits is naar de 64-bits versie van het headerbestand, zodat we de gedeelde x86-code niet onnodig vervuilen en het lijkt alsof LAM zou kunnen werken in 32 bit ook.
-repareer een fout in de adresmaskering (dat doet er uiteindelijk niet toe: in dit geval was de oplossing om de buggy-code volledig te verwijderen).
-een paar triviale opschoningen en toegevoegd commentaar over de access_ok()-regels.
Dus Intel LAM blijft klaar voor gebruik voor Linux 6.4 en Torvalds herwerkte ongeveer honderd regels code om het op te schonen.
Nu voor Linux-gebruikersruimte om zich voor te bereiden op het gebruik van Intel LAM.