Le noyau Linux 5.18 prévoit de permettre l'utilisation de la norme du langage C C11.

Lors des discussions sur l'ensemble de correctifs pour résoudre les problèmes liés aux vulnérabilités de type Spectre dans le code des listes chaînées, il est devenu clair que le problème pourrait être résolu de manière plus élégante si le noyau permettait l'utilisation de code en langage C conforme à une version plus récente de la norme. Actuellement, le code ajouté au noyau doit respecter la spécification ANSI C (C89), établie en 1989.

Le problème lié à Spectre dans le code a été causé par la poursuite de l'utilisation d'un itérateur défini séparément après la boucle – pour parcourir les éléments de la liste chaînée, un macro est utilisé et puisque l'itérateur de la boucle est passé dans cette macro, il est défini en dehors de la boucle elle-même et reste accessible après la boucle. L'utilisation de la norme C99 aurait permis de définir des variables pour la boucle dans le bloc for(), ce qui aurait résolu le problème sans recourir à des solutions alternatives.

Linus Torvalds a accepté l'idée de mettre en œuvre le support de spécifications plus récentes et a proposé de passer à la norme C11 publiée en 2011 dans le noyau 5.18. Lors de la pré-vérification, la compilation avec GCC et Clang en mode nouveau s'est déroulée sans écarts. Si lors de tests plus approfondis aucun problème imprévu ne surgit, dans les scripts de construction du noyau 5.18, l'option '—std=gnu89' sera remplacée par '—std=gnu11 -Wno-shift-negative-value'. Il a également été envisagé d'utiliser la norme C17, mais dans ce cas, il aurait fallu augmenter la version minimale de GCC prise en charge. Inclure le support de C11 respecte les exigences actuelles concernant la version de GCC (5.1).

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster