Linus Torvalds supprime les fonctions insécures __get_user() et __put_user() du noyau Linux, assisté par Claude Code
Le 21 octobre 2026, Linus Torvalds fusionne dans Linux 7.4 la suppression des fonctions __get_user() et __put_user(), des variantes historiques qui ne vérifient pas la plage d’adresses utilisateur et sont donc insécures. Il a rédigé la conversion en partie avec Claude Code, utilisé « comme une sorte de script Coccinelle » : l’IA s’installe dans la maintenance du noyau, y compris pour éliminer des classes entières de bogues mémoire.
21 octobre 2026. Linus Torvalds fusionne dans Linux 7.4 la suppression des fonctions __get_user() et __put_user(), qu’il qualifie de « horreurs » historiques. 21 octobre 2026. Ces variantes, plus rapides mais insécures, ne vérifient pas la plage d’adresses utilisateur avant de copier une variable entre espace utilisateur et noyau. 21 octobre 2026. Il révèle sur la liste de diffusion avoir utilisé Claude « comme une sorte de script Coccinelle » pour mécaniser la conversion. Pourquoi c’est important : le créateur du noyau emploie l’IA non pas pour écrire du code neuf, mais pour éliminer une classe de fonctions dangereuses — un cas d’école de ce que l’IA peut faire de mieux dans la maintenance du C.
Pourquoi ces fonctions étaient dangereuses
get_user() et put_user() copient une variable simple — un entier, un pointeur — entre l’espace utilisateur et l’espace noyau. Ce sont des primitives centrales : chaque appel système qui lit ou écrit une valeur en mémoire utilisateur passe par elles, directement ou indirectement.
Les versions à double tiret bas, __get_user() et __put_user(), étaient des raccourcis « plus rapides » qui sautaient les contrôles de sécurité : pas de validation de la plage d’adresses utilisateur. Un pointeur mal formé, forgé par un processus malveillant, pouvait ainsi être déréférencé là où il ne fallait pas. C’est la définition même d’une faille de validation d’entrée au cœur du noyau.
Dans le merge commit, Torvalds ne mâche pas ses mots : « This is long over-due », écrit-il. Les fonctions sont « entirely historical », ne sont « never the right thing to use any more », et « when mis-used (read: every case) they are not only slower than the right thing, but also insecure because they don’t check the user address range ». La traduction tient en une phrase : elles étaient à la fois plus lentes et moins sûres — le pire des deux mondes.
Une conversion préparée depuis un an
Le travail ne sort pas de nulle part. Torvalds rappelle que la plupart des sites d’usage avaient été convertis « il y a longtemps », mais que « divers restes » subsistaient. Son point de départ : un patch unique rédigé pour « montrer aux gens comment convertir __{get,put}_user() vers le code moderne ».
La pièce maîtresse est venue de Thomas Gleixner, qui a implémenté l’an dernier les scoped user access regions — des zones d’accès utilisateur à portée limitée, dans le commit e497310b4ffb (« uaccess: Provide scoped user access regions »). Ce mécanisme rend les interfaces modernes « particulièrement faciles à utiliser » et, selon Torvalds, « enlève vraiment toute excuse pour les vieilles horreurs ».
La différence entre l’ancien et le nouveau code se lit en deux lignes :
/* Ancien, supprimé dans Linux 7.4 — aucune vérification d'adresse */
__get_user(val, ptr);
/* Moderne — valide la plage d'adresses utilisateur */
get_user(val, ptr); La suppression est désormais complète pour x86 et x86_64, et porte sur tout le code générique du noyau. Des restes subsistent dans quelques ports d’autres architectures, soit pour des cas non triviaux, soit parce que — comme sur ARM64 — les fonctions __get_user() pointaient déjà vers les versions sûres.
L’IA comme outil de refactoring mécanique
L’angle le plus commenté n’est pas la sécurité, c’est l’IA. Sur la liste de diffusion, Torvalds explique avoir utilisé Claude comme « a fancy sort of Coccinelle script ». Coccinelle est l’outil de transformation source-à-source et d’analyse statique que les mainteneurs du noyau utilisent depuis des années pour réécrire mécaniquement des motifs de code à grande échelle. La comparaison est élogieuse : l’IA a fait, sur ce chantier, le travail d’un outil de réécriture déterministe — pas celui d’un générateur de code créatif.
Cette utilisation s’inscrit dans une séquence. La semaine précédente, Torvalds avait employé l’IA pour déchiffrer des bogues dans la bibliothèque assoc_array, puis pour un gain de performance sur le comptage de références des folios du cache de pages. Il « continue sa récente montée en cadence de patches » écrits par lui-même, assisté en partie par Claude Code.
Ce changement de pratique a déjà des conséquences sur la gouvernance du projet. Le noyau impose aujourd’hui une étiquette Assisted-by: pour documenter les patches où l’IA a contribué ; les développeurs débattent depuis le 13 octobre de supprimer cette exigence, tant l’usage des grands modèles de langage s’est banalisé dans la rédaction et la relecture de patches. La question n’est plus de savoir si l’IA participe au noyau, mais comment la tracer.
Ce basculement s’accompagne d’un débat plus large sur la qualité. La Linux Foundation a publié le 20 octobre une étude estimant qu’environ 25 % des nouvelles pull requests open source relèvent du « slop » généré par IA — du code médiocre produit à bas coût. Le contraste avec le geste de Torvalds est instructif : d’un côté, l’IA comme usine à contributions peu relues ; de l’autre, l’IA comme outil de réécriture précis, supervisé par le mainteneur le plus exigeant du projet. La différence ne tient pas à l’outil, mais au contrôle humain qui l’encadre.
Ce qu’il faut en retenir
Pour un exploitant, rien à patcher en urgence : la suppression cible Linux 7.4, en cours de développement, et ne change pas le comportement des appels système. C’est une réduction de surface d’attaque structurelle, pas une correction de CVE déjà exploitée.
La prochaine étape de durcissement se profile déjà : le 22 octobre, les développeurs ont relancé le chantier des shadow stacks côté noyau, l’équivalent matériel d’une pile fantôme pour contrer les attaques ROP au niveau du noyau lui-même, là où le mécanisme n’existait encore que pour l’espace utilisateur. La direction est la même que pour __get_user() : fermer, dans le noyau, les classes entières de failles que la rétrocompatibilité avait laissé traîner.
Le signal est ailleurs. Quand le créateur du noyau emploie un LLM pour éliminer une classe de fonctions dangereuses, il valide un usage précis de l’IA : le refactoring mécanique sous contrôle humain, là où l’erreur coûte cher et où la revue reste obligatoire. C’est le contraire du « code généré sans relecture » que redoutent les mainteneurs — et une démonstration que l’IA a sa place dans le durcissement progressif du noyau.
Verdict
Si vous suivez le développement du noyau, retenez la direction : les interfaces insécures historiques sont progressivement éliminées, et x86 ouvre la marche. Aucune action immédiate n’est requise — la version stable concernée, Linux 7.4, n’est pas encore sortie, et Linux 7.3 reste la branche stable actuelle. Si vous contribuez au noyau, le message de Torvalds vaut consigne : les scoped user access regions de Thomas Gleixner ont retiré toute excuse pour conserver __get_user() et __put_user() dans du code neuf. Et si vous doutez encore de l’IA dans les systèmes critiques, ce cas précis — un LLM employé comme outil de réécriture déterministe, revu par un humain — est la démonstration la plus sobre de sa valeur réelle.