Présentation
La CVE publique de Linux décrit un problème de largeur d’entier dans dbExtendFS(), dans fs/jfs/jfs_dmap.c. JFS calculait la taille d’un groupe d’allocation avec l’expression 1 << l2agsize. Un décalage important appliqué à l’opérande 32 bits pouvait provoquer un comportement indéfini et une taille de groupe invalide.
Le correctif convertit l’opérande gauche en s64 avant le décalage : (s64)1 << l2agsize. Le calcul s’effectue ainsi en arithmétique 64 bits, conformément au type dans lequel la taille du groupe est stockée. Convertir seulement le résultat laisserait l’opération fautive à sa largeur d’origine.
Une taille de groupe d’allocation invalide peut perturber les opérations ultérieures du système de fichiers. L’avis public évoque de possibles corruptions du système de fichiers et des plantages du noyau. Il renvoie aussi vers le correctif amont et les versions concernées ; les correctifs propres à chaque distribution doivent être vérifiés auprès de l’avis de l’éditeur du paquet.
Pour la revue de code, la leçon plus générale est d’examiner les types des opérations arithmétiques intermédiaires, en particulier les décalages et les calculs de taille. Une variable de destination plus large ne rend pas, à elle seule, une expression plus étroite sûre.
Points clés
- Fiche CVE
- 2025
- Source publique
- Linux kernel · National Vulnerability Database
- Code concerné
- JFS filesystem · dbExtendFS() in fs/jfs/jfs_dmap.c
- Thèmes
- CVE-2025-37858 · JFS · Arithmétique entière · Types intermédiaires