URL: https://linuxfr.org/news/sortie-de-linux-3-17 Title: Sortie de Linux 3.17 Authors: Martin Peres Davy Defaud, Siosm, BAud, Romain Perier, JPEC, palm123, jcr83, Florent Fourcot, Jiehong, nonas, Benoît Sibaud, claudex, ariasuni, Sytoka Modon, maboiteaspam, Maxime, patrick_g, Olivier Esver, Mohamed MEDIOUNI, esdeem, Mali, KAeL, M5oul et alpha_one_x86 Date: 2014年08月08日T21:39:48+02:00 License: CC By-SA Tags: kernel, linux, coulisses, linus_torvalds, tomoyo, seccomp et selinux Score: 110 La sortie de la version stable 3.17 du noyau Linux a été annoncée le 5 octobre 2014 par Linus Torvalds. Le nouveau noyau est, comme d’habitude, téléchargeable sur les serveurs du site [_kernel.org_](https://www.kernel.org/). Le détail des évolutions, nouveautés et prévisions est dans la seconde partie de la dépêche. ---- [Les noyaux précédents](http://linuxfr.org/wiki/depeches_noyau) [Site officiel du noyau Linux](http://www.kernel.org/) ---- # En bref Pas moins de quatre (!) nouveaux appels système ont été ajoutés dans cette version : * _memfd_create()_ (détails dans la section _Architecture_) ; * _seccomp()_ (détails dans la section _Sécurité_) ; * _getrandom()_ (détails dans la section _Sécurité_) ; * _kexec_file_load()_ (détails dans la section _Sécurité_). Concernant le DRM ([Direct Rendering Manager](http://en.wikipedia.org/wiki/Direct_Rendering_Manager)), les _render nodes_ ont été activés par défaut. # Annonces des RC par Linus Torvalds ## RC-1 La version [RC-1](https://lkml.org/lkml/2014/8/16/79) est sortie le 16 août 2014 :> Je vais passer la journée de demain dans un avion et je ne suis pas vraiment fan des demandes d’intégration de dernière minute pendant la période d’intégration, donc je ferme la période d’intégration une journée en avance et la 3.17-rc1 est donc de sortie. En fait, elle est sortie depuis un bon moment, mais le réseau était tellement mauvais là où je voyageais que cela m’a empêché de faire cette *annonce*.> > Quoi qu’il en soit, cette période d’intégration était un peu plus courte que les dernières, probablement à cause des ralentissements estivaux dans l’hémisphère nord. Ce qui ne veut pas dire que c’était _petit_ — les dernières publications étaient plus grosses que d’habitude —, celle‐ci est dans la moyenne. C’est déjà trop gros pour que je ne puisse pas attacher le résumé succinct de ces changements. Donc, comme d’habitude dans le rapport d’intégration qui est attaché, ce ne sont pas les noms des développeurs qui ont écrit le code mais ceux des intégrateurs.>> Les changements sont répartis partout, mais il n’y a pas d’ajout de nouvelles architectures ou de nouveaux systèmes de fichiers. Environ trois quarts des changements concernent les pilotes et, pour le reste, la moitié consiste en des mises à jour d’architecture. Le reliquat étant les changements divers du noyau (réseau, systèmes de fichiers, etc.).>> La prochaine semaine est occupée par le _Kernel Summit_, donc je suppose que la RC2 sera assez petite, mais nous verrons bien.> > Linus ## RC-2 La version [RC-2](https://lkml.org/lkml/2014/8/25/558) est sortie le 25 août 2014 :> J’ai donc dérogé à mon habitude de publier le dimanche, en partie parce qu’il n’y avait pas grand chose ce jour‐là (à cause du _Kernel Summit_ et de la _LinuxCon_), mais aussi pour des raisons sentimentales : le 25 août est l’anniversaire de l’annonce originelle de Linux (_« Hello everybody out there using Minix »_), donc c’est une bonne journée pour les annonces de publication.> > Quoi qu’il en soit, pour une RC2 c’est plutôt petit et j’espère que cela continuera ainsi. C’est environ 60 % de pilotes (DRM, réseau, HID, son, PCI), 15 % de mises à jour de systèmes de fichiers (CIFS, ISOFS, NFS), 10 % d’architectures (MIPS, ARM, quelques trucs mineurs dans x86) et le reste est « divers » (noyau, réseau et documentation).> > En d’autres termes, il y en a un peu partout et rien de particulier ne ressort.> > Merci de bien la tester,> > Linus ## RC-3 La version [RC-3](https://lkml.org/lkml/2014/8/31/173) est sortie le 31 août 2014 :> Je suis revenu à la livraison dominicale et la RC3 est sortie. Comme prévu, il y a plus de changements que dans la RC2, puisque les gens sont clairement de retour du voyage du _Kernel Summit_, etc. Mais, heureusement, ce n’est pas *beaucoup* plus gros que la RC2 et il ne se passe rien de particulièrement bizarre, donc je vais simplement ignorer l’explication que « c’est l’été » et j’espère que tout va vraiment bien.> > Ne me prouvez pas que j’ai tort,>> Linus ## RC-4 La version [RC-4](https://lkml.org/lkml/2014/9/7/127) est sortie le 7 septembre 2014 :> Pendant un court moment, cette semaine fut vraiment agréable et calme, mais c’était surtout parce que l’entrée _linux-foundation.org_ est tombée de l’univers DNS et ma boîte à lettres est devenue très calme pendant quelques heures. Le reste de la semaine a paru assez normal.> > « Assez normal » n’est pas si mal cependant, et je ne m’en plains pas. Il n’y a rien eu de particulièrement gros ou effrayant — nous avons eu une frayeur passagère à cause d’une stupide anomalie dans les couches de compatibilité, mais il s’est avéré que c’était juste un faux positif et, au final, quelques commentaires ont été ajoutés au lieu de modifications de code.>> Les statistiques des modifications sont raisonnables et elles sont sainement réparties. Nous avons les mises à jour habituelles d’architectures et de pilotes mais il y a en vérité plus de changements dans `fs/` que dans le reste. C’est principalement dû à une mise à jour tardive de F2FS, pour laquelle j’ai décidé que je n’allais pas m’embêter à me mettre en colère, composée en grande partie de corrections propres, avec quelques nettoyages de code.>> Et, vraiment, si les modifications de F2FS semblent importantes, c’est parce que le reste est vraiment petit.>> Espérons que ça reste calme. Je note que ni Greg ni Davem ne m’ont finalement envoyé quelque chose pour la RC4, ce qui explique probablement pourquoi c’est calme et peu volumineux.>> Linus ##RC-5 La version [RC-5](https://lkml.org/lkml/2014/9/14/233) est sortie le 14 septembre 2014 :> Alors, j’aurais probablement dû décaler cette sortie à mercredi pour des raisons sentimentales : ça fera 23 ans que j’ai mis en ligne les sources de la 0.01. Mais je ne suis pas une personne très sentimentale, donc, tant pis. Je reste sur ma sortie normale du dimanche.>> Et, comme je l’ai mentionné dans les commentaires de la RC4, la précédente version était assez petite, probablement parce que ni Greg ni Davem ne m’avaient envoyé de mises à jour cette semaine. Devinez quoi ? Les mises à jour de David sur la partie réseau sont arrivées une heure après la publication de la RC4 et, comme Greg est revenu cette semaine aussi, donc — surprise, surprise — la RC5 est plus grosse que la RC4 ne l’était.>> Eh bien, c’était trop beau pour durer.> > J’ai aussi eu un rapport d’une ancienne régression dans le _dentry cache_ (depuis 3.10 — assez ancien) et cela a eu pour effet de me faire jeter un coup d’œil un peu plus poussé, et il y avait quelques autres cas spéciaux qui pouvaient nous faire fonctionner d’une manière non optimale. J’en ai corrigé une partie et Al a corrigé le reste. Donc, je l’espère, nous n’avons pas seulement corrigé la régression connue, mais nous faisons mieux qu’avant.>> De toute façon, la taille de la RC5 impose que je ne fasse pas la publication trop tôt, ce qui veut dire que je vais devoir réfléchir à ce que je vais faire pour la prochaine période de fusion. Parce qu’il semble que cela va entrer en conflit avec mon voyage à la _LinuxCon EU_. Je n’ai pas encore décidé ce que je vais faire — je pourrais publier la 3.17 normalement, mais ne pas ouvrir la période de fusion à cause du voyage. Ou bien, s’il y a plus d’anomalies que ce que je pense, peut‐être que je décalerai la publication de la 3.17.>> Nous verrons bien.>> Peu importe, les changements de la RC5 sont pour la moitié des pilotes (réseau, processeurs graphiques, USB, entrées, ATA...) et pour le reste, c’est un mélange de mises à jour des systèmes de fichiers (le truc mentionné précédemment dans le cœur de la couche VFS, mais aussi des anomalies sur des exportations NFS trouvées par Al et divers autres trucs), d’achitectures (ARM, PA-RISC, s390) et du cœur réseau. Ainsi qu’une poignée d’autres. Le rapport résumé est ci‐joint.>> En d’autres termes, tout semble normal, même si j’aurais préféré que la RC5 soit plus petite. Mais, au sujet de l’arrivée des modifications du réseau et des pilotes, je ne vais pas prétendre que c’était inattendu ou particulièrement effrayant. J’espère que c’est fini maintenant et que la RC6 et la RC7 seront plus calmes.>>Touchons du bois.>>Linus ## RC-6 La version [RC-6](https://lkml.org/lkml/2014/9/21/138) est sortie le 21 septembre 2014 :> Ça a été calme — suffisamment pour qu’avec mon prochain voyage ce soit la dernière RC et que la version finale 3.17 sorte la semaine prochaine.> > Bien sûr, cela dépend toujours des évènements — si nous avons quelque chose d’important qui arrive la semaine prochaine, j’aurai peut‐être à reporter la sortie. Mais, pour le moment, nous sommes dans les rails.>> Le résumé des modifications est ci‐joint ; vu depuis trois mille mètres d’altitude cela semble normal : un peu plus de la moitié concerne les pilotes (pilotes graphiques, son, IIO, média, USB), un peu moins du tiers concerne les mises à jour d’architectures (ARM, MIPS, x86), et le reste concerne principalement les mises à jour de systèmes de fichiers (GFS2, CIFS, Btrfs, NFS).>> Rien de particulier ne ressort et je ne suis au courant d’aucune grosse anomalie en attente. Donc, s’il vous plaît, allez le tester, parce que ça *devrait* être proche de la publication.>> Linus ## RC-7 La version [RC-7](https://lkml.org/lkml/2014/9/28/161) est sortie le 28 septembre 2014 :> J’avais vraiment espéré pouvoir garder la RC6 comme dernière RC et sortir la version 3.17 aujourd’hui, mais cela ne s’est pas produit. Rien de bien méchant, mais, franchement, les choses ne se sont pas calmées comme je l’avais espéré.>> Et, même si mon plan de voyage aurait été bien plus agréable si j’avais pu faire une version plus-rapidement-que-d’habitude, le confort ne fait pas partie des critères pour sortir une version. Tant pis.>> Cela signifie donc probablement (sauf circonstances exceptionnelles) que la semaine prochaine sera celle de la sortie de la version 3.17, et, qu’à cause des déplacements, je retarderai probablement l’ouverture de la fenêtre de fusion d’une semaine.>> Je vais être très grognon si quelqu’un m’envoie des demandes d’intégration que je jugerais inappropriées en ce moment. Je ne pense pas que ce qu’il y a dans la RC7 soit dangereux, mais j’ai l’impression que certaines personnes ont attendu la dernière minute pour m’envoyer ce qui fait partie des correctifs « pas tout à fait tranquilles ». Si j’ai le même sentiment la semaine prochaine, je ferai mon malpoli habituel et déciderai probablement que vous avez manqué votre tour.>> Bref, retour à la RC7. Il y a des choses de tous les côtés. La partie I2C des correctifs sort un peu du lot à cause de déplacement de code, mais, à part ça, les différences sont plutôt minimes. Environ 60 % pour les pilotes, le reste étant un mélange de documentation, architectures, systèmes de fichiers et réseau. Rien de particulier n’émerge, mais c’était trop gros pour sortir une version sans nouvelle RC.>> Linus ## La version finale La [version finale](https://lkml.org/lkml/2014/10/5/126) est sortie le 5 octobre 2014 :> Donc, la semaine dernière a été calme et je n’ai donc pas d’états d’âme à livrer la 3.17 selon le programme normal (à l’inverse du programme optimiste « je peux peut‐être livrer une semaine en avance » qui n’aurait pas dû exister).>> Cependant, j’ai des voyages en vue — ce que j’espérais éviter lorsque je comptais encore livrer en avance. Ce qui veut dire que, même si la 3.17 est sortie, je ne vais pas commencer à intégrer activement la semaine prochaine, ni celle qui suit, pendant laquelle aura lieu _LinuxCon EU_...>> Ce qui veut dire que selon comment vous voyez les choses, la période d’intégration de la 3.18 sera soit de trois semaines ou bien démarrera tout doucement. Ça ne m’embête pas de recevoir des demandes d’intégration maintenant (en vérité j’en ai déjà quelques unes en attente dans ma boîte de réception), mais je ne commencerai probablement pas à les traiter avant une semaine.>> Peu importe, retour à la 3.17. Rien d’important n’est arrivé durant la semaine dernière, comme vous pouvez le voir dans le résumé en pièce jointe. Principalement des pilotes (i915, Nouveau, Ethernet, SCSI, son) et quelques corrections sur le réseau ; avec quelques modifications diverses et variées.>> Allez le tester,>> Linus # Les nouveautés ## Architecture ### x86 : la génération Broadwell prend en charge le mode inactif La future génération de processeurs de chez Intel, baptisée [_Broadwell_](http://en.wikipedia.org/wiki/Broadwell_%28microarchitecture%29) est maintenant prise en charge dans le pilote _idle_ de chez Intel. Après l’ajout de cette génération au pilote P-State dans la version précédente du noyau, c’est maintenant au tour du pilote _idle_ d’en recevoir la prise en charge. Pour rappel, le mode _idle_ (inactif) d’un processeur correspond à l’état dans lequel il se retrouve lorsqu’il n’y a rien à faire. Un processeur peut passer la majorité de son temps à être inactif. Lorsque cela se produit, le noyau le passe en mode _idle_ qui, pour la majorité des architectures, se traduit par une consommation énergétique réduite. ### Nouvelles puces ARM #### Rockchip Le dernier [système mono‐puce](http://fr.wikipedia.org/wiki/Syst%C3%A8me_sur_une_puce) de Rockchip, le RK3288, est maintenant pris en charge. Il s’agit de la première réalisation matérielle d’ARM Cortex-A17 effectuée par Rockchip. Gravé en 28 nanomètres, il dispose de quatre unités de calcul cadencées à 1,8 GHz, prend en charge la virtualisation ARM et la technologie [LPAE](http://fr.wikipedia.org/wiki/Architecture_ARM#LPAE). La puce contient un processeur graphique Mali-T764, un [DSP](http://fr.wikipedia.org/wiki/Processeur_de_signal_num%C3%A9rique) permettant de gérer le décodage matériel du H.264 et H.265 jusqu’à 4K, ainsi qu’un crypto‐processeur qui prend en charge un bon nombre de crypto‐systèmes contemporains (AES 128 bits, SHA-1, SHA-256...). En bref, il fait tout, sauf repasser le linge ! La gestion des appareils ainsi que des diverses cartes de développements qui disposent d’un RK3288 sera prévue à partir de la prochaine version. Pour l’instant, les développeurs se concentrent essentiellement sur la prise en charge des cartes d’évaluation mises à disposition par Rockchip. #### NVIDIA Tegra Des travaux de partage d’infrastructure de code pour les puces NVIDIA Tegra ont été menés, afin de factoriser le plus de code possible entre les plates‐formes. Ceci est notamment réalisable grâce à l’utilisation du [_device tree_](http://www.devicetree.org/Main_Page). La carte d’évaluation Tegra T30 _Apalis_ est également prise en charge et dispose d’une arborescence matériel (_device tree_) au sein du noyau. #### Texas Instruments La carte d’évaluation pour les puces de la famille des AM437x fait son apparition. Le TI AM437x est une puce disposant de processeurs à haute performance basés sur des Cortex A9. Ce système mono‐puce peut s’interfacer avec des contrôleurs Ethernet Gigabit, un bus CAN, un écran tactile et dispose de 2 Gio de mémoire vive DDR3. Ceci permet de prendre en charge les futures tablettes, cartes de développement et téléphones mobiles qui arriveraient avec les modèles de puces AM4379, AM4376 ou encore AM4378. #### Allwinner Destiné au marché des téléphones mobiles et annoncé en septembre 2013 par Allwinner, le A23 est désormais pris en charge. Double cœur, ARM Cortex A7 cadencé à 1,5 GHz et équipé d’un processeur graphique Mali-400 MP2, il s’agit d’une version basse consommation du A20. Notez toutefois qu’il est ici question d’un début de prise en charge, la communauté _sunxi_ étant comme celle de Rockchip, essentiellement maintenue par des passionnés et des bénévoles. La carte de développement Hummingbird, équipée d’un Allwinner A31 est également de la partie. Destinée aux développeurs, elle dispose d’un Cortex A7 quadri‐cœur, d’un processeur graphique PowerVR SGX544 MP2, de 1 Gio de mémoire vive en DDR3, 8 Gio de mémoire Flash interne, d’une connexion Ethernet Gigabit et d’une connexion Wi‐Fi 802.11n. ### Fin de la prise en charge de certaines architectures Les vieilles architectures POWER3 et RS64 ne sont plus prises en charge par le noyau. Ces architectures ne fonctionnaient manifestement plus depuis plusieurs versions et personne ne l’a remarqué. La prise en charge des processeurs Samsung S5P6440, S5P6450, et S5PC100 (des processeurs ARMv6 et ARMv7 sortis en 2009) a également été supprimée. ### memfd : descripteur de fichier pointant vers une zone de mémoire scellée L’un des quatre appels système ajoutés dans cette version est `memfd_create()`. Il introduit le concept de sceau (_seal_) pour rendre plus simple l’utilisation de zones de mémoire partagées. Lorsque deux processus veulent partager une zone de mémoire, ils s’assurent généralement que certaines propriétés sont respectées pour que les accès soient valides : * il ne faut pas qu’un processus écrive par dessus les données en train d’être lues par un autre ; * il ne faut pas qu’un processus réduise la taille de la zone de mémoire partagée pendant qu’un autre y accède ; * il ne faut pas qu’un processus étende la zone partagée au‐delà de la limite initiale. Ces propriétés sont généralement vraies si les deux processus qui échangent des données sont de confiance. Mais ce n’est plus nécessairement le cas si l’on souhaite utiliser le partage de mémoire comme méthode générique de communication inter‐processus. Voici deux exemples : * Une application graphique veut partager avec le serveur graphique la zone de mémoire dans laquelle elle effectue le rendu du contenu d’une fenêtre. L’application cliente se charge d’allouer l’espace mémoire et transmet un descripteur de fichier au serveur. Lorsque celui‐ci voudra lire le contenu à afficher sur l’écran, il ne pourra jamais être sûr que le client ne sera pas en train de manipuler le contenu ou la taille de la zone de mémoire partagée. S’il réduit la taille du tampon, le serveur devra gérer le signal SIGBUS, ce qui ajoute une complexité non négligeable. * Un processus veut faire appel à une fonction d’un autre processus. Pour éviter d’avoir à recopier une quantité potentiellement importante d’information en mémoire, le principe de « zéro copie » (partage mémoire) est préférable. Sauf qu’une fois que la zone de mémoire est partagée entre deux processus, le processus appelant n’a plus de garantie quant à son usage par l’autre processus. Cette situation oblige chaque processus à garder une copie des données qu’il partage et empêche donc tout fonctionnement en mode zéro copie. Il existe trois méthodes pour contourner ces problèmes (le signal `SIGBUS`, les verrous POSIX et le drapeau obsolète `MAP_DENYWRITE` de l’appel `mmap()`), mais chacune a des inconvénients majeurs (gestion des signaux dans le cas des bibliothèques, accès concurrents, déni de service). C’est ici qu’intervient le concept de sceau. Ils permettent d’indiquer qu’une fois posés sur un descripteur de fichier, certaines opérations ne peuvent plus être effectuées. Il n’est pas possible de les supprimer, ce qui permet à un programme de s’assurer sans ambigüité de l’impossibilité de certaines opérations. Les sceaux introduits sont les suivants : * `SHRINK` : la taille d’un partage mémoire ne peut plus être réduite par un appel à `ftruncate()` ou `open(O_TRUNC)` ; * `GROW` : la taille ne peut plus être augmentée par un appel à `ftruncate()`, `fallocate()` ou `write()` ; * `WRITE` : aucune opération d’écriture n’est désormais possible (`fallocate(PUNCH_HOLE)`, `mmap()` et `write()`) ; * `SEAL` : plus aucun nouveau sceau ne peut être ajouté. Cette fonctionnalité permet de simplifier significativement l’utilisation des partages mémoire dans les cas sus‐cités. Pour s’en servir, il faut donc utiliser l’appel système `memfd_create()` pour créer des fichiers prenant en compte cette opération. Les zones de mémoire scellées sont une composante essentielle du projet _kdbus_, qui vise à remplacer le démon D-Bus en espace utilisateur par une implémentation beaucoup plus efficace dans le noyau. D’autres détails et des exemples sont disponibles via les liens suivants : [_memfd_create(2)_](https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/), correctifs [[1](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9183df25fe7b194563db3fec6dc3202a5855839c)] et [[2](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=40e041a2c858b3caefc757e26cb85bfceae5062b)], [documentation provisoire de _kdbus_](https://code.google.com/p/d-bus/source/browse/kdbus.txt). ## Pilotes graphique libres ### DRM (Direct Rendering Manager) Après des mois de discussion, Maarten Lankhorst a enfin réussi à faire accepter ses modifications afin de permettre à un pilote graphique d’attendre qu’un autre pilote ait fini de faire un rendu avant de continuer son exécution. Cette interface de programmation (API) de _fencing_ sera probablement utilisée en conjonction de DMA-buf dans Linux 3.19 afin de permettre de synchroniser le rendu dans le cas d’utilisation de la technologie Optimus ou dans les systèmes mono‐puces. Certaines personnes ont essayé de limiter cette interface de programmation aux modules GPL, mais sans succès. La gestion des nœuds de rendu (_render nodes_) qui avait été [ajoutée dans Linux 3.12](https://linuxfr.org/news/sortie-de-linux-3-12#render-nodes) vient d’être activée par défaut. Pour mémoire, cela permet à des applications d’utiliser le processeur graphique sans avoir besoin de communiquer avec un serveur d’affichage. Pour finir, la gestion de la rotation des plans graphiques fait également son entrée dans Linux 3.17. Pour plus d’informations, vous pouvez consulter [la demande d’intégration](http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a7d7a143d0b4cb1914705884ca5c25e322dba693). ### AMD/ATI (pilote radeon) Peu de nouveautés du côté de Radeon pour cette nouvelle version, puisque la seule nouvelle fonctionnalité est la prise en charge de la mise à l’échelle intégrée à certains écrans permettant de dispenser le processeur graphique de cette tâche. Une nouvelle version des en‐têtes des micro‐codes a été ajoutée pour simplifier leurs mises à jour. Il y a cependant beaucoup de corrections de bogues. Par exemple, la gestion énergétique DPM est maintenant activée par défaut sur les familles Cayman et BTC. Pour plus d’informations, vous pouvez consulter la [demande d’intégration _radeon_](http://lists.freedesktop.org/archives/dri-devel/2014-August/065571.html). ### Intel (i915) La nouveauté principale de cette version est l’activation par défaut du `Panel Self‐Refresh` (PSR) pour les liens eDP des processeurs graphiques Haswell et Broadwell. Cette activation a nécessité un travail de fond sur le suivi précis du tampon avant (_front buffer_) qui a eu pour effet de pouvoir également activer la compression du tampon de trame (_frame buffer_) sur toutes les plates‐formes, le PSR sur Baytrail et le changement dynamique de taux de rafraîchissement (DRRS). Cela devrait permettre de diminuer la consommation énergétique. Toujours du côté de l’économie d’énergie, l’alimentation des processeurs graphiques sera maintenant désactivée lorsque l’écran est en veille (_DPMS OFF_). Les modifications pour obtenir cette fonctionnalité ont été très invasives, mais elles préparent également l’arrivée de la gestion du mode d’affichage atomique. La plate‐forme Baytrail a également reçu beaucoup d’attention pour la gestion du lien graphique DSI, la gestion du rétro‐éclairage, le séquenceur matériel et la gestion de la commutation de page (_page flipping_). Pour finir, la gestion des modes d’affichage en espace utilisateur (UMS) est maintenant désactivée par défaut. Le code sera supprimé du noyau dans une prochaine version si personne ne se plaint. La gestion des modes d’affichage par le noyau (KMS) devient donc la seule façon de gérer l’écran sur tous les pilotes libres majeurs (Intel, Nouveau et Radeon). Pour plus d’informations, vous pouvez consulter l’article de [Daniel Vetter sur Linux 3.17](http://blog.ffwll.ch/2014/08/neat-stuff-for-317.html). ### NVIDIA (pilote nouveau) Une fois n’est pas coutume, la [demande d’intégration](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/nouveau?id=913847586290d5de22659e2a6195d91ff24d5aa6) pour le pilote _Nouveau_ n’a pas été envoyée par Dave Airlie (mainteneur DRM), mais par Ben Skeggs directement. Ce retard a été causé par un bogue qui est devenu beaucoup plus présent avec le nouveau code et qui a pris énormément de temps à être identifié, ce qui a empêché Ben de donner son code à temps à Dave. Du coup, Ben a envoyé le code directement à Linus qui l’a accepté sans problème. La nouveauté la plus visible de cette nouvelle version est l’amélioration de la gestion du GK20A, le processeur graphique intégré au Tegra K1. Celui‐ci sera maintenant détecté directement par _Nouveau_ grâce à un nouveau module appelé _nouveau_platform_ qui s’occupe d’amener du courant au processeur graphique et d’activer l’horloge [[_commit_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/nouveau?id=8ba9ff11632cb05d6f55555711d8425e32ee44b0)]. Le GK20A a également reçu la gestion du recadencement (_reclocking_) manuel [[_commit_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/nouveau?id=b13a0a9e2922cbfbf7b400f4f0fd0acd19f941df)]. Certains processeurs graphiques démarrent avec le processeur graphique principal désactivé. Après avoir demandé de l’aide, NVIDIA a [donné un peu de documentation](ftp://download.nvidia.com/open-gpu-doc/gk104-disable-graphics-power-gating/1/gk104-disable-graphics-power-gating.txt) sur comment réactiver ce processeur [[_commit_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/nouveau?id=61854bdb135d1b958a5057739206d663528870db)]. La gestion d’une fonctionnalité d’effacement de texture n’utilisant pas de bande passante mémoire, appelée _Zero‐Bandwidth Clear_, a été ajoutée au noyau. Pour vraiment en tirer parti, il est nécessaire d’ajouter sa prise en charge dans l’espace utilisateur, même si certaines rares applications peuvent déjà en tirer parti sans modifications. Pour finir, il est maintenant possible d’accéder à une partie de l’interface interne de _nouveau-drm_ depuis l’espace utilisateur, ce qui permet d’éviter de devoir écrire des `ioctl()` pour chaque nouvelle fonctionnalité. Cela permet maintenant d’utiliser les compteurs de performance ou encore la nouvelle fonctionnalité de `Zero-Bandwidth Clear`. Son petit nom est _nvif_. ### Les processeurs graphiques des systèmes mono‐puces ARM Voici les demandes d’intégration des principaux processeurs graphiques embarqués : * Adreno (pilote _msm_) : [_demande d’intégration_](http://comments.gmane.org/gmane.comp.video.dri.devel/111737) ; * Samsung (pilote _exynos_) : [_demande d’intégration_](http://lists.freedesktop.org/archives/dri-devel/2014-August/065369.html) ; * Tegra (pilotes _host1x_ et _tegra_) : [_demande d’intégration_](http://lists.freedesktop.org/archives/dri-devel/2014-August/065754.html). ## Réseau ### IPv6 #### Étiquettes de flux automatiques Si vous n’avez jamais entendu parler des étiquettes de flux (_flow label_) en IPv6, c’est probablement normal. Ce champ a été ajouté dès le début des spécifications du protocole, mais il a fallu du temps pour qu’un consensus émerge sur son utilisation. Les règles les plus récentes sont dans la [RFC 6437](http://tools.ietf.org/html/rfc6437) et il y a déjà des demandes pour obtenir des exceptions à ces règles. Pour résumer, l’idée de ce champ est de simplifier l’identification d’un flux réseau, qui est habituellement défini avec les ports source et destination en compléments des adresses IP. Avec l’étiquette, on peut avoir un flux en lisant uniquement les en‐têtes IP, ce qui facilite énormément le traitement. Au‐delà des standardisations de ce qu’un nœud du réseau IPv6 a le droit de faire ou de ne pas faire, l’IETF a « oublié » de spécifier comment un système d’exploitation devait gérer la communication pour les étiquettes de flux entre la partie utilisateur et l’espace noyau, y compris dans l’[API avancée](http://tools.ietf.org/html/rfc3542). Chaque système d’exploitation a donc fait son truc dans son petit coin. Le noyau Linux, qui nous intéresse, a probablement le système le plus ancien (depuis le noyau 2.2.7) et le plus complet, qui permet une gestion fine entre l’espace utilisateur et le noyau. Concrètement, chaque utilisateur peut demander une étiquette sur un flux, gérer les permissions de cette étiquette (la partager avec tous, avec l’application, avec personne...), gérer son temps de vie, etc. Ce serait très bien si c’était utilisé, mais ce n’est pas du tout le cas (notamment car cette API ne se retrouve que sur le noyau Linux). Un développeur de Google a donc proposé de se rapprocher du fonctionnement des noyaux BSD, en ajoutant l’option [`auto_flowlabels`](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=cb1ce2ef387b01686469487edd45994872d52d73) au noyau via `sysctl`. Cette option permet de générer une étiquette de flux aléatoire pour chaque connexion (un socket TCP, un socket UDP...) du système, ainsi que l’option de _socket_ `IPV6_AUTOFLOWLABEL` permettant d’activer ou désactiver ce comportement sur chaque _socket_. À noter que ce fonctionnement n’est toujours pas standard, mais il est bien plus simple et est compatible avec les noyaux BSD. Comme ce mode n’est pas compatible avec l’existant (il ne tient pas compte des permissions du gestionnaire historique), il est désactivé par défaut. Le même développeur a également ajouté de quoi profiter immédiatement de cette option, en utilisant l’[étiquette de flux pour reconnaître un flux](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19469a873bafd4e65daef3597db2bd724c1b03c9), plutôt que de lire les en‐têtes de la couche transport. #### Plus de contrôles sur les générations d’adresses En IPv6, le noyau se charge lui‐même de générer les adresses sur une interface réseau. L’espace utilisateur n’a pas beaucoup de contrôle : le noyau génère automatiquement des adresses locales et, s’il reçoit des annonces de routeurs, il se configure en conséquence (sauf configuration contraire pour ce dernier point). Ce comportement est très gênant pour des outils comme NetworkManager ou pour des équipements particuliers avec un micro‐logiciel contrôlant la partie réseau. Une [option a donc été ajoutée](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bc91b0f07ada5535427373a4e2050877bcc12218) pour que l’espace utilisateur puisse choisir entre différents modes pour générer les adresses. Actuellement, le choix est restreint à « ne fait rien » et « fait l’auto-configuration comme avant ». On pourrait cependant en imaginer d’autres. #### Accepter les RA avec adresses locales Les développeurs ne manquent pas d’imagination pour ajouter des options _sysctl_ dans le dossier `/proc/sys/net/ipv6/`, et c’est cette fois pour un cas d’usage assez particulier. [Ce correctif](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d93331965729850303f6111381c1a4a9e9b8ae5a) permet d’accepter une annonce de routeur qui provient d’une adresse configurée en local sur votre équipement. Le cas d’usage est cependant assez limité. ### Netfilter #### Disparition de ulog Pour rappel, la cible Netfilter `ulog` permettait de surveiller des évènements réseau dans le journal du noyau. Un cas extrême serait :> iptables -A INPUT -j ULOG Cette cible est marquée comme obsolète depuis longtemps, un message est envoyé dans le journal du noyau à chaque utilisation. Sa remplaçante, `NFLOG`, est disponible depuis 2006. Il a donc été décidé de [la supprimer](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7200135bc1e61f1437dc326ae2ef2f310c50b4eb), ce qui permet de diminuer la quantité de code à maintenir. #### Log de paquets Ethernet La suppression de `ULOG` n’est pas que la partie émergée de l’iceberg concernant les modifications du journal système de Netfilter. On peut notamment citer l’ajout de la [surveillance des paquets ARP](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=35b9395104d51f4b85847fa72a1bf4136d36c56e). #### La traduction d’adresses indépendante de iptables Depuis l’introduction de [_nftables_](http://netfilter.org/projects/nftables/), on peut dire que le noyau Linux a deux pare‐feux. Certaines fonctionnalités utilisent cependant les mêmes outils, notamment pour la traduction d’adresses (NAT). La dépendance de la traduction d’adresses aux outils _iptables_ a donc [été supprimée](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8993cf8edf42527119186b558766539243b791a5), permettant de compiler un noyau avec _nftables_ prenant en charge la traduction d’adresses, sans _iptables_. ### Bluetooth La partie Bluetooth a énormément évolué, avec plus de 250 correctifs entre juin et août. Beaucoup de travail a été fait sur le [_Bluetooth low energy_](http://en.wikipedia.org/wiki/Bluetooth_low_energy), notamment la [scrutation en arrière plan](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0d2bf13462732d3b2e11d8efb0545c1ed272298b), l’auto‐connexion en arrière plan et la capacité à lire les [horloges Bluetooth](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=33f35721030185a2c5a1bb8afd4c3744709745b5). Dans le même temps, le protocole [6LoWPAN](http://fr.wikipedia.org/wiki/6LoWPAN) a désormais son [propre module](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5547e48c09d51ad21948c8090a34339939651450) et son [propre dossier](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2c6bed7cfcd3f594ed9e4d6919fa2ebea2243d19). ### Pilotes Intel a ajouté [les pilotes pour le [FCoE](http://fr.wikipedia.org/wiki/Fibre_Channel_over_Ethernet "Fibre Channel over Ethernet")](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a1a693698d00b48d2d56fc1c887ab86375934a06) sur ses cartes XL710 à 10 et 40 Gbit/s. Quelques cartes Broadcom ont désormais [un pilote](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9e37f045d5e7f33450515f237c2f6f6bfee137dd). ### Autres petites nouvelles Le protocole [SCTP](http://fr.wikipedia.org/wiki/Stream_Control_Transmission_Protocol) avait reçu une extension de son API dans la [RFC 6458](http://tools.ietf.org/html/rfc6458). Voilà des modifications qui couvrent les sections [5.3.2](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bbbea41d5e53335fd81e89c728f71b14386f336e), [5.3.4](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=63b949382c5f263746b1c177f6ff84de2201ae9d), [5.3.5](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0d3a421d284812d07970b4ccee74d4fa38737e4d), [5.3.6](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2347c80ff127b94ddaa675e2b78ab4cef46dc905) et [8.1.31](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6b3fd5f3a2bbc8464a8e0bf134a183b8fa026439). Pour les fans de performances, la partie `pktgen` a reçu quelques optimisations : [[_correctif 1_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=baac167b706600ebe7158acaeb7c489ae9d0bb8b)] et [[_correctif 2_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8788370a1d4b1d89efc1aea1b13ea5e5bfe10fde)]. ## Sécurité ### Capacités Dans certains cas, des capacités non définies pouvaient empêcher certains processus d’utiliser l’appel `ptrace()` sur leurs fils, par exemple. Ce problème était difficile à déboguer parce que les capacités n’étaient pas visibles dans `/proc/$PID/status`. Celles‐ci sont dorénavant visibles et tous les processus ne peuvent maintenant plus avoir de capacités non définies [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7d8b6c63751cfbbe5eef81a48c22978b3407a3ad)]. ### Liste non exhaustive des vulnérabilités corrigées * [CVE-2014-3631](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3631) [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=95389b08d93d5c06ec63ab49bd732b0069b7c35e)] ; * [CVE-2014-3601](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3601) [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=350b8bdd689cd2ab2c67c8a86a0be86cfa0751a7)]. ### Gestion du sous‐système d’audit pour l’architecture ARM64 L’architecture ARM64 peut utiliser le sous‐système d’audit [correctifs : [1](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5701ede884c2221e6ebbb54aec83dc433287bc50), [2](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=875cbf3e4614cfdcc7f65033e25292aec80f09c0)]. ### Appel système getrandom() L’appel système `getrandom(2)` a été introduit suite aux demandes formulées par les développeurs de la version portable de LibreSSL, le _fork_ d’OpenSSL par les développeurs d’OpenBSD. Son comportement est similaire à l’appel système `getentropy()` sous OpenBSD : il permet de récupérer une quantité définie de données aléatoires. Il était déjà possible d’obtenir des données aléatoires sous Linux en effectuant un appel système `read()` sur `/dev/urandom`, mais un nouvel appel système était nécessaire dans les cas où la limite de descripteurs de fichiers ouverts était atteinte par un processus. En effet, une fois cette limite atteinte, il n’est plus possible d’ouvrir `/dev/urandom` pour récupérer de l’entropie, ce qui forçait l’utilisation d’algorithmes peu sûrs dans la bibliothèque LibreSSL. Ce cas de figure va donc pouvoir être complètement éliminé. Avec cet appel système, il est aussi possible d’attendre que la quantité d’entropie accumulée par le système soit suffisante pour que la réserve d’entropie soit correctement initialisée avant de recevoir des données aléatoires. Cette solution a été privilégiée car elle introduit cette sémantique sans changer le comportement de `/dev/urandom`. Une page de manuel partielle est disponible dans le message de _commit_, en attendant qu’elle soit ajoutée aux [pages officielles](http://man7.org/linux/man-pages/dir_section_2.html) [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c6e9d6f38894798696f23c8084ca7edbf16ee895), article _LWN_ : [_A system call for random numbers: getrandom()_](http://lwn.net/Articles/606141/)]. ### Filtres seccomp pour les programmes multi‐threads Un second appel système a été ajouté pour gérer les filtres `seccomp`. Il s’ajoute à l’interface utilisant l’appel `prctl()`, qui ne devrait plus évoluer à présent. Toutes les fonctionnalités seront donc disponibles avec l’appel système qui est plus extensible. Celui‐ci permet de synchroniser les filtres `seccomp` définis pour tous les _threads_ d’un processus. Dans certains cas, des _threads_ pouvaient être créés par des bibliothèques avant qu’un processus n’ait commencé son exécution. Il n’était alors pas possible d’appliquer de filtre `seccomp` à ces _threads_. Cette fonctionnalité résout donc cette situation en forçant les autres _threads_ à utiliser le filtre `seccomp` du _thread_ effectuant l’appel. Une page de manuel est aussi prévue pour ajout dans le projet officiel : [_seccomp(2)_](http://article.gmane.org/gmane.linux.ports.mips.general/41895) [correctifs : [_1_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=48dc92b9fc3926844257316e75ba11eb5c742b2c), [_2_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c2e1f2e30daa551db3c670c0ccfeab20a540b9e1), article _LWN_ : [_Seccomp filters for multi‐threaded programs_](http://lwn.net/Articles/600250/)]. ### Amélioration de kexec pour le mode UEFI secure boot Un troisième appel système `kexec_file_load()` a été ajouté. Il permet au noyau en cours d’exécution de vérifier la signature d’un noyau à exécuter avant de faire appel à `kexec()` pour démarrer avec. Cela va permettre d’autoriser l’utilisation de l’appel `kexec()` pour les systèmes fonctionnant avec l’_UEFI secure boot_ activé. L’article [_Subverting security with kexec_](http://mjg59.dreamwidth.org/28746.html) sur le blog de Matthew Garrett explique pourquoi cette modification est nécessaire [correctifs : [_1_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f0895685c7fd8c938c91a9d8a6f7c11f22df58d2), [_2_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=cb1052581e2bddd6096544f3f944f4e7fdad4c7f), [_3_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8e7d838103feac320baf9e68d73f954840ac1eea), [_4_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=74ca317c26a3f8543203b61d262c0ab2e30c384e) ; article _LWN_ : [_Reworking kexec for signatures_](http://lwn.net/Articles/603116/)]. ### Cryptographie La gestion du générateur déterministe de nombres aléatoires SP800-90A, spécifié par le [[NIST]] a été ajoutée : [voir [correctif](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=541af946fe1360ec1b45730964e87d7f93c50781)]. Il est aussi possible d’analyser des données signées avec PKCS#7 et de vérifier leurs signatures [correctifs : [_1_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2e3fadbf730fd0d13c891d5e555af3e7f39ca3f4), [_2_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9f0d33146e2ae81342a493c579c0e0c1aa84a527), [_3_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a4730357ee724f8c64f0292541ba3da8a95510fb), [_4_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8c76d79393ccc9b89d9af402d79a49a9cd43c5aa), [_5_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=08815b62d700e4fbeb72a01986ad051c3dd84a15), [_6_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=22d01afb210ff77fc480a1fc531cd59a4f32157a), [_7_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3968280c7699f11e27a21aeafacf50bc86c2ed25), [_8_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=af316fc442ef23901bbfcec5af55e69ca6ce9563), [_9_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=98801c002f7e573b4a86bcd5b234864d375e98a0)]. ### LSM Un nouveau point d’ancrage LSM a été ajouté dans la fonction permettant le chargement d’un micrologiciel binaire dans le noyau. Il permet, par exemple, aux modules de vérifier l’intégrité de ces micrologiciels avant qu’ils soient acceptés et utilisés par le noyau [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=13752fe2d7f2d41c2fd92a5d1b1c6e38c4de0c05)]. Il peut être utilisé par tous les modules de sécurité, mais c’est pour l’instant le module IMA qui en fait usage. #### IMA & EVM Le module de sécurité IMA utilise donc le nouveau point d’ancrage LSM pour vérifier l’intégrité des micrologiciels chargés dans le noyau [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5a9196d715607f76d6b7d96a0970d6065335e62b)]. Les clés utilisées par IMA sont stockées dans un trousseau de clés du noyau spécifique `.ima`. Une option de configuration permet d’imposer que ces clés soient signées par une clé de confiance déjà présente dans le trousseau de clés du système [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7d2ce2320e8efdc4a6dcbae7b329ed3f0d1cd778)]. Les sommes de contrôle des fichiers surveillés par IMA peuvent désormais être calculées de façon asynchrone par un accélérateur cryptographique matériel dédié, ce qui permet de gagner en performance et consommation d’énergie pour les fichiers de taille notable [correctifs : [_1_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3bcced39ea7d1b0da0a991e221f53de480c6b60b), [_2_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6edf7a89260859c5e72861dc4e6e169495f076c8)]. #### SELinux Le code gérant les étiquettes SELinux liées aux interactions réseau a été nettoyé [correctifs : [_1_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4fbe63d1c773cceef3fe1f6ed0c9c268f4f24760), [_2_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4b8feff251da3d7058b5779e21b33a85c686b974), [_3_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=41c3bd2039e0d7b3dc32313141773f20716ec524)]. Nettoyages et optimisations diverses [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=615e51fdda6f274e94b1e905fcaf6111e0d9aa20)], correction d’une potentielle prise de verrou récursive [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f31e799459659ae88c341aeac16a8a5efb1271d4)]. #### TOMOYO Un problème pouvant empêcher les systèmes utilisant le système de fichiers ext4 de démarrer a été corrigé [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8fe7a268b18ebc89203c766b020b9e32f1cfeebf)]. Optimisation mineure lorsque le sous‐système d’audit est activé [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=77f4fa089c724adc3a87c10eb031bca91b144ac0)]. ### Trousseaux de clés Il est à nouveau possible d’invalider manuellement les clés « temporaires » utilisées notamment par AFS, CIFS et NFS [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0c7774abb41bd00d5836d9ba098825a40fa94133)]. La taille par défaut du trousseau a été significativement augmentée, suite à son utilisation par les clients NFS pour stocker les association UID et GID [[_correctif_](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=738c5d190f6540539a04baf36ce21d46b5da04bd)]. ## Systèmes de fichiers ### F2FS Samsung [travaille toujours sur son petit dernier](http://lkml.iu.edu/hypermail/linux/kernel/1408.0/01602.html) et en a nettoyé le code pour limiter un peu la contention au niveau des verrous logiques. L’option `nobarrier` permet maintenant de désactiver le *write barrier*, si nécessaire. En temps normal, cette fonctionnalité permet de laisser le système de fichiers décider quand et comment écrire les données du cache sur le disque au meilleur moment, pour être plus sûr. Néanmoins, *nobarrier* peut améliorer les performances, au prix d’une sécurité moindre. Enfin, la fonctionnalité *tmpfile* est maintenant implémentée : elle permet de créer un fichier temporaire unique qui se détruit à la fin de l’exécution du programme qui l’a créé. ### NFS Le client NFS gère désormais la recherche utilisant un algorithme [RCU](https://lwn.net/Articles/573497/), améliorant ainsi les performances de recherche [dans le cas où les données à chercher sont dans le cache](https://lwn.net/Articles/608617/). ### XFS À côté des corrections habituelles, XFS [se dote enfin d’une interface pour *sysfs*](http://lkml.iu.edu/hypermail/linux/kernel/1408.1/02280.html). Pour rappel, *sysfs* est la solution de système de fichiers virtuel du noyau pour unifier la manière dont sont remontées les informations des pilotes dans l’espace utilisateur — XFS ne fait que rattraper un manque dans ce domaine. Pour le moment, seul un petit nombre de [paramètres](https://lwn.net/Articles/608751/) sont disponibles, principalement à des fins de test. ### Btrfs Présent dans les version 3.15 et 3.16, alors que Btrfs commençait à utiliser les *workqueues*, un interblocage pouvait apparaître dans un cas spécifique, mais qui est malgré tout apparu. Eh bien, cette version toute fraîche [voit sa résolution livrée](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9e0af23764344f7f1b68e4eefbe7dc865018b63d) ! À côté d’une amélioration des opérations *rename* et *truncate*, également susceptibles de créer un interblocage (passé inaperçu jusqu’ici), s’inspirant de [la meilleure solution connue venant d’ext4](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8d875f95da43c6a8f18f77869f2ef26e9594fecc), Btrfs améliore les résultats renvoyés par la commande `df` [pour le cas du RAID 1](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ba7b6e62f420f5a8832bc161ab0c7ba767f65b3d) ! En effet, de par sa structure particulière, l’estimation de l’espace libre restant d’une partition a toujours été moins bonne que pour ext4, par exemple. L’amélioration des valeurs pour les cas du RAID 5 et 6 sera traitée ultérieurement. Enfin, quelques corrections de bogues habituelles parsèment le code çà et là. ### Autres UDF, ReiserFS et ext2 ont eu droit à des [correctifs mineurs](http://lkml.iu.edu/hypermail/linux/kernel/1408.1/02351.html) et récurrents. ## Virtualisation ###KVM Les fonctionnalités ont été ajoutées via deux demandes d’intégration, [une pour le x86, le MIPS et le s390](https://lkml.org/lkml/2014/8/4/122), et [une autre pour ARM, et PowerPC](https://lkml.org/lkml/2014/8/7/174). On y retrouve les changements suivants : - la virtualisation avec KVM fonctionne maintenant sur les systèmes ARM « [gros‐boutistes](http://fr.wikipedia.org/wiki/Endianness#Big_endian) », aussi bien en 32 bits qu’en 64 bits ; il est possible d’émuler le contrôleur d’interruptions dans une autre version que celle du matériel ; - beaucoup de corrections de bogues sur les hôtes « petits‐boutistes » pour le PowerPC et l’activation de la virtualisation matérielle sur ceux‐ci ; la prise en charge des PowerPC 440 (sortis en 1999) est abandonnée ; - pour le MIPS et le s390, il n’y a que quelques corrections de bogues mineures ; - pour l’architecture x86, la virtualisation imbriquée est améliorée, des optimisations ont été apportées sur les « vieux processeurs » jusqu’au [_Nehalem_](http://fr.wikipedia.org/wiki/Nehalem) (architecture Intel sortie en 2008). ###Xen On ne retrouve que quelques corrections de bogues et pas de nouvelles fonctionnalités. # Pages de manuel On en profite pour noter la sortie d’une nouvelle version des pages de manuel, la 3.73. Les principales nouvelles pages sont : * _namespaces(7)_ : vue d’ensemble des espaces de noms (_namespaces_) disponibles sous Linux ; * _pid_namespaces(7)_ : description de celui lié aux identifiants de processus ; * _user_namespaces(7)_ : description de celui lié aux utilisateurs. Tous les détails sont sur le [blog du mainteneur Michael Kerrisk](http://linux-man-pages.blogspot.fr/2014/09/man-pages-373-is-released.html). Pour rappel, les pages de manuel de Linux sont aussi disponibles sur le [site du projet](http://man7.org/linux/man-pages/index.html). On notera l’absence des pages de manuel des appels système introduits par cette version. Leur inclusion sera probablement effective dans la prochaine version. # Le bilan en chiffres En ce qui concerne les statistiques du cycle de développement de Linux 3.17, on peut se référer à la [page dédiée du site _remword.com_](http://www.remword.com/kps_result/) qui compile des statistiques relatives au développement de Linux. Le nombre final de correctifs incorporés dans cette version est de 12 353, soit légèrement en dessous des 12 802 correctifs de la précédente. Ces ajouts sont le résultat du travail d’environ 1 475 développeurs soit, là encore, une légère baisse par rapport aux 1 527 développeurs du noyau précédent. C’est à nouveau Intel qui occupe la tête du classement des entreprises avec 10,21 % des correctifs, suivi par Red Hat (7,93 %). Les employés de la _Linux Foundation_ ont signé le plus de correctifs avec 12,21 %, devant Red Hat avec 12,15 % et 10,77 % pour Intel. Les hobbyistes occupent comme d’habitude la troisième place, avec 5,63 %, si l’on ne comptabilise pas les contributeurs dont l’affiliation est inconnue, qui représentent 24,37 % des contributions. Le développement de Linux est donc majoritairement sponsorisé par des entreprises, mais il reste encore de nombreux passionnés qui font ça pour eux. Jonathan Corbet a réalisé un article détaillant l’évolution du nombre de contributeurs au noyau entre les versions 3.15 et 3.17 : [_Who wrote 3.15 through 3.17_](http://lwn.net/Articles/613006/). # Appel à volontaires Cette dépêche est rédigée par plusieurs contributeurs dont voici la répartition : | | Mainteneur | Contributeur(s) ----------------------------- | -------------------------------------------------- | --------------- **La phase de test** | Aucun | [Julien Pecqueur](https://linuxfr.org/users/jpec) **Arch** | [Romain Perier](https://linuxfr.org/users/rperier) | **Pilotes graphiques libres** | [Martin Peres](https://linuxfr.org/users/mupuf) | **Réseau** | [Florent Fourcot](https://linuxfr.org/users/ffourcot) | **Systèmes de fichiers** | Aucun | [_Jiehong_](https://linuxfr.org/users/jiehong) **Sécurité** | [Timothée Ravier](https://linuxfr.org/users/siosm) | **Virtualisation** | [Xavier Claude](https://linuxfr.org/users/claudex) | **Édition générale** | Aucun | [Timothée Ravier](https://linuxfr.org/users/siosm), [Martin Peres](https://linuxfr.org/users/mupuf), [Davy Defaud](https://linuxfr.org/users/davy78) Un peu de vocabulaire : * le mainteneur d’une section de la dépêche est responsable de l’organisation et du contenu de sa partie, il s’engage également à l’être dans le temps jusqu’à ce qu’il accepte de se faire remplacer ; * un contributeur est une personne qui a participé à la rédaction d’une partie d’une section de la dépêche, sans aucune forme d’engagement pour le futur. Malgré cette équipe importante, beaucoup de modifications n’ont pas pu être expliquées par manque de temps et de volontaires. Si vous aimez ces dépêches et suivez tout ou partie de l’évolution technique du noyau, veuillez contribuer dans votre domaine d’expertise. C’est un travail important et très gratifiant qui permet aussi de s’améliorer. Il n’est pas nécessaire d’écrire du texte pour aider, simplement lister les _commits_ intéressants dans une section aide déjà les rédacteurs à ne pas passer à côté des nouveautés. Essayons d’augmenter la couverture sur les modifications du noyau !