Mentre in questi giorni Linus Torvalds si occupa principalmente di inserire nuovo codice nel kernel Linux e di essere un custode piuttosto che sviluppare attivamente nuovo codice kernel, per Linux 6.4 in fase di sviluppo si è ritrovato a scrivere un po’di codice.

Come notato la scorsa settimana, si è occupato personalmente di ripulire il codice della copia della memoria x86 per Linux 6.4. Questa settimana ha unito più del suo codice in quanto ha contestato parte del codice unito dagli ingegneri Intel come parte dell’abilitazione del Linear Address Masking.

Durante i giorni di Linux 6.2 alla fine dello scorso anno, Linus ha rifiutato il codice Intel LAM per vari problemi tecnici. Intel lo ha poi rielaborato per Linux 6.4.


Questa volta Linus ha unito Intel LAM in Linux 6.4 come questa nuova funzionalità della CPU per consentire allo spazio utente di memorizzare i metadati all’interno di alcuni bit di puntatori senza mascherarli prima dell’uso. Intel LAM, come Arm TBI, può essere utile per macchine virtuali, profiling/disinfettanti/tagging e altre applicazioni. Ma questa volta c’era un codice tutt’altro che ideale che si è preso personalmente cura di sistemare.

Linus ha scritto in una nuova unione di venerdì:

Unisci il mio ramo degli aggiornamenti x86 uaccess.

Gli aggiornamenti LAM (“Linear Address Masking”) in questa versione mi hanno reso insoddisfatto di come è stato fatto”access_ok()”e in realtà si è scoperto che conteneva anche un paio di piccoli bug. Questa è la mia pulizia del codice:

-usa il bit di segno del puntatore __user piuttosto che mascherare l’indirizzo e confrontarlo con l’intervallo TASK_SIZE.

Abbiamo già fatto questa parte per il lato get/put_user(), ma’access_ok()’ha fatto l’ingenua operazione”mask and range check”, che non solo genera codice sgradevole, ma ha anche significato che __access_ok stesso non ha fatto un buon lavoro, e quindi copy_from_user_nmi() non ha ottenuto il controllo giusto.

-spostare tutto il codice a 64 bit solo nella versione a 64 bit del file di intestazione, in modo da non inquinare inutilmente il codice x86 condiviso e far sembrare che LAM possa funzionare anche a 32 bit.

-correggere un bug nel mascheramento dell’indirizzo (che alla fine non ha importanza: in questo caso la correzione consisteva semplicemente nel rimuovere completamente il codice difettoso).

-un paio di banali ripuliture e commenti aggiunti sulle regole di access_ok().

Quindi Intel LAM rimane pronto per Linux 6.4 e Torvalds ha rielaborato circa un centinaio righe di codice per ripulirlo.
Ora che lo spazio utente Linux si prepari a utilizzare Intel LAM.

Categories: IT Info