Version du noyau Linux 5.11

Après deux mois de développement, Linus Torvalds a présenté la version du noyau Linux 5.11. Parmi les changements les plus notables : prise en charge des enclaves Intel SGX, nouveau mécanisme d'interception des appels système, bus virtuel auxiliaire, interdiction de la construction de modules sans MODULE_LICENSE(), mode de filtrage rapide des appels système dans seccomp, arrêt du support de l'architecture ia64, transfert de la technologie WiMAX dans la branche « staging », possibilité d'encapsulation SCTP dans UDP.

La nouvelle version contient 15 480 corrections de la part de 1 991 développeurs, la taille du patch étant de 72 Mo (les changements ont touché 12 090 fichiers, 868 025 lignes de code ont été ajoutées, 261 456 lignes ont été supprimées). Environ 46 % des modifications présentées dans 5.11 concernent les pilotes, environ 16 % des changements sont liés à la mise à jour de code spécifique à l'architecture matérielle, 13 % concernent le stack réseau, 3 % les systèmes de fichiers et 4 % les sous-systèmes internes du noyau.

Les principales nouveautés :

  • Sous-système de disque, entrée/sortie et systèmes de fichiers
    • Dans Btrfs, plusieurs options de montage ont été ajoutées pour la récupération de données à partir d'un système de fichiers endommagé : « rescue=ignorebadroots » pour monter malgré les dommages de certains arbres racines (extent, uuid, data reloc, device, csum, free space), « rescue=ignoredatacsums » pour désactiver la vérification des sommes de contrôle pour les données et « rescue=all » pour activer simultanément les modes ‘ignorebadroots’, ‘ignoredatacsums’ et ‘nologreplay’. Le support de l'option de montage « inode_cache », qui avait été déclarée obsolète, a été arrêté. Le code a été préparé pour mettre en œuvre la prise en charge de blocs avec des métadonnées et des données de taille inférieure à celle de la page (PAGE_SIZE), ainsi que pour la prise en charge du mode d'attribution d'espace zoné. Les requêtes non mises en cache (Direct IO) ont été transférées à l'infrastructure iomap. La performance de plusieurs opérations a été optimisée, avec des gains de performance pouvant atteindre plusieurs dizaines de pourcents dans certains cas.
    • Dans XFS, un drapeau « needsrepair » a été implémenté, signalant la nécessité d'une réparation. Lors de l'activation de ce drapeau, le système de fichiers ne peut pas être monté jusqu'à ce que le drapeau soit réinitialisé par l'utilitaire xfs_repair.
    • Dans Ext4, seules des corrections de bugs et des optimisations ont été proposées, ainsi qu'un nettoyage du code.
    • Le ré-export des systèmes de fichiers montés sur NFS (c'est-à-dire qu'une partition montée via NFS peut maintenant être exportée via NFS et utilisée comme cache intermédiaire) a été autorisé.
    • L'appel système close_range() permet à un processus de fermer un ensemble de descripteurs de fichiers ouverts en une seule opération, avec une option CLOSE_RANGE_CLOEXEC pour fermer les descripteurs en mode close-on-exec.
    • Le système de fichiers F2FS a ajouté de nouveaux appels ioctl() permettant à l'espace utilisateur de gérer quels fichiers sont stockés sous forme compressée. Une option de montage « compress_mode= » a été ajoutée pour choisir de placer le gestionnaire de compression côté noyau ou dans l'espace utilisateur.
    • Il est maintenant possible de monter Overlayfs par des processus non privilégiés en utilisant un espace de noms d'identifiants utilisateur distinct. Un audit complet du code a été effectué pour vérifier la conformité à la modèle de sécurité. Overlayfs prend également en charge le montage utilisant des copies d'images de systèmes de fichiers avec une désactivation optionnelle de la vérification des UUID.
    • Le système de fichiers Ceph a ajouté le support du protocole msgr2.1, permettant d'appliquer l'algorithme AES-GCM pour le transfert de données de manière chiffrée.
    • Dans le module dm-multipath, il est désormais possible de prendre en compte la liaison au CPU (« IO affinity ») lors du choix de la route pour les requêtes d'entrée/sortie.
  • Mémoire et services système
    • Un nouveau mécanisme d'interception des appels système a été ajouté, basé sur prctl() et permettant à l'espace utilisateur de générer des exceptions lors de l'appel à un certain appel système et d'émuler son exécution. Cette fonctionnalité est demandée dans Wine et Proton pour l'émulation des appels système Windows, nécessaire pour garantir la compatibilité avec les jeux et les logiciels exécutant directement des appels système en contournant l'API Windows (par exemple, pour se protéger contre les utilisations non autorisées).
    • Dans l'appel système userfaultfd(), destiné à traiter les erreurs de page (accès à des pages de mémoire non allouées) dans l'espace utilisateur, il est désormais possible de désactiver le traitement des exceptions se produisant au niveau du noyau, pour compliquer l'exploitation de certaines vulnérabilités.
    • Le sous-système BPF a ajouté le support du stockage de données local à la tâche (task-local storage), liant les données à un gestionnaire BPF spécifique.
    • La gestion de la consommation de mémoire par les programmes BPF a été entièrement refondue : un contrôleur cgroup a été proposé pour gérer l'utilisation de la mémoire dans les objets BPF au lieu de memlock rlimit.
    • Le mécanisme BTF (BPF Type Format), qui fournit des informations pour la vérification des types dans le pseudo-code BPF, a été mis à jour pour prendre en charge les modules du noyau.
    • L'interface d'entrée/sortie asynchrone io_uring a été enrichie pour prendre en charge les appels système shutdown(), renameat2() et unlinkat(). Lors de l'appel de io_uring_enter(), il est désormais possible de spécifier un délai (la prise en charge de l'argument pour indiquer le délai peut être vérifiée en utilisant le drapeau IORING_FEAT_EXT_ARG).
    • L'architecture ia64, utilisée dans les processeurs Intel Itanium, a été classée comme abandonnée, ce qui signifie la fin des tests. Hewlett Packard Enterprise a cessé d'accepter des commandes pour un nouveau matériel Itanium, tandis qu'Intel l'a fait l'année dernière.
    • La prise en charge des systèmes basés sur l'architecture MicroBlaze, dépourvus d'un contrôleur de gestion de la mémoire (MMU), a été arrêtée. De tels systèmes ne sont plus courants.
    • Pour l'architecture MIPS, la prise en charge des tests de couverture de code (coverage testing) a été ajoutée via l'outil gcov.
    • La prise en charge du bus auxiliaire virtuel a été introduite pour interagir avec des dispositifs multifonctionnels combinant des fonctionnalités nécessitant différents pilotes (par exemple, des cartes réseau prenant en charge Ethernet et RDMA). Le bus peut être utilisé pour attribuer un pilote primaire et secondaire à un dispositif, dans les situations où l'utilisation du sous-système MFD (Multi-Function Devices) pose des problèmes.
    • Pour l'architecture RISC-V, le soutien au système de gestion de la mémoire CMA (Contiguous Memory Allocator) a été ajouté, optimisé pour l'allocation de grandes zones de mémoire continue à l'aide de techniques de déplacement de pages mémoire. Pour RISC-V, des moyens ont également été réalisés pour limiter l'accès à /dev/mem et pour suivre le temps de traitement des interruptions.
    • Pour les systèmes ARM 32 bits, l'outil de débogage KASan (Kernel address sanitizer) a été ajouté, permettant d'identifier les erreurs liées à la mémoire. Pour les ARM 64 bits, la mise en œuvre de KASan a été révisée pour utiliser des étiquettes MTE (MemTag).
    • Un nouvel appel système epoll_pwait2() a été ajouté, permettant des délais avec une précision en nanosecondes (l'appel epoll_wait manipule les millisecondes).
    • Un message d'erreur est désormais généré lors de la tentative de compilation des modules du noyau téléchargés, lorsque la licence du code n'est pas définie à l'aide du macro MODULE_LICENSE(). L'utilisation de la macro EXPORT_SYMBOL() pour les fonctions statiques déclenchera également une erreur de compilation.
    • Ajout du support pour le mappage des objets GEM à partir de la mémoire utilisée pour les entrées/sorties, permettant ainsi d'accélérer le fonctionnement avec le framebuffer sur certaines architectures.
    • Le support de Qt4 a été supprimé dans Kconfig (le support de Qt5, GTK et Ncurses est conservé).
  • Virtualisation et sécurité
    • Le système d'appel seccomp() a été amélioré pour inclure un mode de réponse rapide, permettant de déterminer très rapidement si un appel système est autorisé ou interdit sur la base d'une table de droits (constant-action bitmap) attachée au processus, sans nécessiter le démarrage d'un gestionnaire BPF.
    • Les composants du noyau pour la création et la gestion des enclaves basées sur la technologie Intel SGX (Software Guard eXtensions) ont été intégrés, permettant aux applications d'exécuter du code dans des zones de mémoire chiffrées isolées, dont l'accès par le reste du système est restreint.
    • Dans le cadre de l'initiative visant à restreindre l'accès de l'espace utilisateur aux registres MSR (model-specific register), l'écriture dans le registre MSR_IA32_ENERGY_PERF_BIAS, qui permet de modifier le mode d'efficacité énergétique du processeur (« normal », « performance », « powersave »), est interdite.
    • La possibilité de désactiver la migration des tâches à haute priorité entre les CPU a été transférée de la branche kernel-rt pour les systèmes temps réel.
    • Pour les systèmes ARM64, il est possible d'appliquer des balises MTE (MemTag, Memory Tagging Extension) pour les adresses mémoire des gestionnaires de signaux. L'utilisation de MTE s'active en spécifiant l'option SA_EXPOSE_TAGBITS dans sigaction() et permet de vérifier la validité des pointeurs pour empêcher l'exploitation des vulnérabilités causées par l'accès à des blocs de mémoire déjà libérés, des dépassements de tampon, des accès avant initialisation et une utilisation en dehors du contexte actuel.
    • Un paramètre « DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING » a été ajouté, permettant à la sous-système dm-verity de vérifier les signatures de hachage des certificats stockés dans le second magasin de clés (keyring). En pratique, cette configuration permet de vérifier non seulement les certificats intégrés dans le noyau, mais également les certificats chargés à l'exécution, ce qui permet de mettre à jour les certificats sans mettre à jour l'intégralité du noyau.
    • Dans User-mode Linux, un support pour le mode suspend-to-idle a été ajouté, ce qui permet de geler l'environnement et d'utiliser le signal SIGUSR1 pour sortir du mode de veille.
    • Dans le mécanisme virtio-mem, qui permet le branchement et débranchement à chaud de la mémoire pour des machines virtuelles, un support pour le mode des gros blocs (BBM, Big Block Mode) a été ajouté, permettant de transférer ou retirer de la mémoire par blocs dépassant la taille d'un bloc de mémoire du noyau, ce qui est nécessaire pour optimiser le VFIO dans QEMU.
    • Un support pour le chiffrement CHACHA20-POLY1305 a été ajouté à l'implémentation TLS fonctionnant au niveau du noyau.
  • Sous-système réseau
    • Pour 802.1Q (VLAN), un mécanisme de gestion des défaillances de connexion (CFM, Connectivity Fault Management) a été mis en œuvre, permettant de détecter, vérifier et isoler les défaillances dans les réseaux avec des ponts virtuels (Virtual Bridged Networks). Par exemple, le CFM peut être utilisé pour localiser des problèmes dans des réseaux englobant plusieurs organisations indépendantes, dont les employés n'ont accès qu'à leur propre matériel.
    • Le support de l'encapsulation des paquets du protocole SCTP dans des paquets UDP (RFC 6951) a été ajouté, ce qui permet d'utiliser SCTP dans des réseaux avec d'anciens traducteurs d'adresses qui ne prennent pas directement en charge SCTP, ainsi que de mettre en œuvre SCTP sur des systèmes ne fournissant pas un accès direct au niveau IP.
    • La mise en œuvre de la technologie WiMAX a été déplacée vers staging et est prévue pour suppression dans le futur, à moins que des utilisateurs ne se manifestent comme ayant besoin de WiMAX. WiMAX n'est déjà plus utilisé dans les réseaux publics, et le seul pilote qui peut être utilisé avec WiMAX dans le noyau reste l'ancien pilote Intel 2400m. Dans le configurateur réseau NetworkManager, le support de WiMAX a été abandonné en 2015. Actuellement, WiMAX a été pratiquement complètement remplacé par des technologies telles que LTE, HSPA+ et Wi-Fi 802.11n.
    • Des travaux ont été réalisés pour optimiser la performance du traitement du trafic TCP entrant en mode zerocopy, c'est-à-dire sans copie supplémentaire dans de nouveaux buffers. Pour le trafic de taille moyenne, allant de dizaines à plusieurs centaines de kilooctets de données, l'application de zerocopy au lieu de recvmsg() est sensiblement plus efficace. Par exemple, les modifications mises en œuvre ont permis d'améliorer l'efficacité du traitement du trafic de style RPC avec des messages de 32 Ko en utilisant zerocopy de 60 à 70 %.
    • Ajout de nouveaux appels ioctl() pour la création de ponts réseau couvrant plusieurs canaux PPP. La fonctionnalité proposée permet aux trames de se déplacer d'un canal à un autre, par exemple, de PPPoE à une session PPPoL2TP.
    • Poursuite de l'intégration dans le noyau MPTCP (MultiPath TCP), une extension du protocole TCP permettant à une connexion TCP de livrer des paquets simultanément par plusieurs chemins via différentes interfaces réseau, liées à différentes adresses IP. La nouvelle version met en œuvre la prise en charge de l'option ADD_ADDR pour annoncer les adresses IP connexions possibles lors de l'ajout de nouveaux flux à une connexion MPTCP existante.
    • Ajout de la possibilité de configurer des actions en cas de dépassement du budget de polling des connexions (busy-polling). Le mode SO_BUSY_POLL disponible précédemment impliquait un passage à softirq lorsque le budget était épuisé. Pour les applications qui doivent continuer à utiliser le polling, une nouvelle option SO_PREFER_BUSY_POLL a été proposée.
    • Dans IPv6, prise en charge des modes SRv6 End.DT4 et End.DT6, utilisés pour créer des IPv4 L3 multi-utilisateurs VPN et des dispositifs VRF (Virtual routing and forwarding).
    • Dans Netfilter, l'implémentation des expressions set a été unifiée, ce qui permet de spécifier plusieurs expressions pour chaque élément des listes set.
    • Dans la pile sans fil 802.11, des API ont été ajoutées pour configurer les limites de puissance SAR, ainsi que les paramètres AE PWE et HE MCS. Le pilote Intel iwlwifi a ajouté la prise en charge de la bande 6GHz (Ultra High Band). Le pilote Qualcomm Ath11k a intégré la technologie de configuration rapide des connexions FILS (Fast Initial Link Setup, standardisée comme IEEE 802.11ai), permettant d'éliminer les délais lors du roaming lors de la migration d'un point d'accès à un autre.
  • Matériel
    • Le pilote amdgpu a ajouté la prise en charge de l'APU AMD "Green Sardine" (Ryzen 5000) et du GPU "Dimgrey Cavefish" (Navi 2), ainsi qu'un soutien initial pour l'APU AMD Van Gogh avec le cœur Zen 2 et le GPU RDNA 2 (Navi 2). Le support de nouveaux identifiants APU Renoir (basé sur le CPU Zen 2 et le GPU Vega) a également été ajouté.
    • Le pilote i915 pour les cartes graphiques Intel a intégré la prise en charge de la technologie IS (Integer scaling) avec la mise en œuvre d'un filtre pour le redimensionnement prenant en compte l'état des pixels adjacents (interpolation de type Nearest-neighbor) pour déterminer la couleur des pixels manquants. Le support des cartes Intel DG1 a été élargi. La technologie « Big Joiner », présente depuis les puces Ice Lake / Gen11, permet d'utiliser un transcodeur pour traiter deux flux, par exemple pour une sortie sur écran 8K via un seul DisplayPort. Un mode de commutation asynchrone entre deux tampons dans la mémoire vidéo (async flip) a été ajouté.
    • Le pilote nouveau a ajouté un support initial des GPU NVIDIA basés sur l'architecture « Ampere » (GA100, GeForce RTX 30xx), encore limité aux outils de gestion des modes vidéo.
    • La prise en charge du protocole 3WIRE, utilisé dans les panneaux LCD, a été ajoutée. Le support des panneaux novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 et ABT Y030XX067A 3.0 a été ajouté. On peut également noter la prise en charge du panneau des smartphones OnePlus 6 et 6T, permettant de charger sur des appareils avec un noyau non modifié.
    • Le support du premier contrôleur hôte USB4 discret Intel Maple Ridge a été ajouté.
    • La prise en charge des codecs audio Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI et XCVR, Realtek RT715 et Qualcomm SM8250 a été ajoutée.
    • Ajout de la prise en charge des plateformes ARM, dispositifs et plateformes : Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik basé sur Marvell Prestera 98DX3236, serveurs avec Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, Chromebook « Trogdor », Kobol Helios64, Engicam PX30.Core.
    • Prise en charge intégrée de la console de jeux Ouya basée sur NVIDIA Tegra 3.

En même temps, la Fondation latino-américaine du logiciel libre a formulé un variant entièrement libre du noyau 5.11 — Linux-libre 5.11-gnu, épuré d'éléments de firmwares et de pilotes contenant des composants non libres ou des segments de code dont l'utilisation est limitée par le fabricant. Dans cette nouvelle version, le nettoyage des pilotes pour qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, transceiver audio nxp et contrôleur pci mhi a été effectué. Le code de nettoyage des blobs dans les pilotes et sous-systèmes amdgpu, btqca, btrtl, btusb, i915 csr a été mis à jour. De nouveaux blobs dans m3 rproc, idt82p33 ptp clock et qualcomm arm64 ont été désactivés.

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