Alors que ces jours-ci, Linus Torvalds s’occupe principalement de rassembler le nouveau code dans le noyau Linux et d’être un gardien plutôt que de développer lui-même activement le nouveau code du noyau, pour le Linux 6.4 en développement, il s’est retrouvé à faire un peu de codage.

Comme indiqué la semaine dernière, il a personnellement entrepris de nettoyer le code de copie de mémoire x86 pour Linux 6.4. Cette semaine, il a fusionné davantage de son propre code car il a contesté une partie du code fusionné par les ingénieurs d’Intel dans le cadre de leur activation du masquage d’adresse linéaire.

Lors des jours de Linux 6.2 à la fin de l’année dernière, Linus a rejeté le code Intel LAM à l’époque pour divers problèmes techniques. Intel l’a ensuite retravaillé pour Linux 6.4.


Cette fois-ci, Linus a fusionné Intel LAM dans Linux 6.4 en tant que nouvelle fonctionnalité du processeur pour permettre à l’espace utilisateur de stocker des métadonnées dans certains bits de pointeurs sans les masquer avant utilisation. Intel LAM-comme Arm TBI-peut être utile aux machines virtuelles, au profilage/désinfecteurs/balisage et à d’autres applications. Mais cette fois-ci, il y avait un code moins qu’idéal qu’il a personnellement entrepris d’améliorer.

Linus a écrit dans une nouvelle merge le vendredi :

Fusionner ma branche de mises à jour x86 uaccess.

Les mises à jour LAM (“Linear Address Masking”) dans cette version m’ont rendu mécontent de la façon dont”access_ok()”a été fait, et il s’est avéré qu’il contenait également quelques petits bogues. Voici mon nettoyage du code :

-utilisez le bit de signe du pointeur __user plutôt que de masquer l’adresse et de la comparer à la plage TASK_SIZE.

Nous avons déjà fait cette partie pour le côté get/put_user(), mais’access_ok()’a fait la chose naïve”mask and range check”, qui non seulement génère du code méchant, mais a aussi fini par avoir un sens que __access_ok lui-même n’a pas fait du bon travail, et donc copy_from_user_nmi() n’a pas bien vérifié.

-déplacer tout le code 64 bits uniquement dans la version 64 bits du fichier d’en-tête, afin de ne pas polluer inutilement le code x86 partagé et donner l’impression que LAM pourrait fonctionner dans 32 bits aussi.

-corrige un bogue dans le masquage d’adresse (cela n’a finalement pas d’importance : dans ce cas, le correctif consistait simplement à supprimer entièrement le code bogué).

-quelques nettoyages triviaux et des commentaires ajoutés sur les règles access_ok().

Ainsi, Intel LAM reste prêt à fonctionner pour Linux 6.4 et Torvalds en a retravaillé une centaine lignes de code pour le nettoyer.
Maintenant, pour l’espace utilisateur Linux, préparez-vous à utiliser Intel LAM.

Categories: IT Info