CVE-2026-97525 in Linuxinformation

Résumé

par VulDB • 25/09/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

x86/mm/pat : Allouer des tables de pages fractionnées en tant que tables de pages du noyau

Un PTE (Page Table Entry) est alloué directement sans passer par les routines standard d'allocation de tables de pages (telles que pte_alloc_one_kernel()) lorsque le code CPA divise une grande page (__split_large_page()).

Cela signifie que le constructeur de table de pages n'est jamais appelé, ni la table de pages marquée comme une table de pages du noyau.

Le premier problème entraîne le folio associé à la table de pages qui n'est pas marqué comme une table de pages (le __pagetable_ctor() n'est jamais appelé, donc ni le __folio_set_pgtable()) et les statistiques ne sont pas mises à jour pour refléter cela (lruvec_stat_add_folio() n'est jamais appelée).

Le second problème, consistant à ne pas marquer la table de pages comme une table de pages du noyau (ptdesc_set_kernel() n'est jamais appelé), est beaucoup plus problématique.

Depuis le commit :

5ba2f0a15564 ("mm: introduce deferred freeing for kernel page tables")

la libération des tables de pages du noyau a été regroupée et depuis le commit suivant :

e37d5a2d60a3 ("iommu/sva: invalidate stale IOTLB entries for kernel address space")

les entrées du cache IOTLB pour les tables de pages du noyau ont été invalidées lors de leur libération.

Puisque les tables de pages fractionnées sont libérées sans cette invalidation, l'IOTLB peut contenir des entrées obsolètes à leur sujet.

Résoudre le problème en utilisant l'API d'allocation PTE ordinaire au moment du fractionnement.

Cela entraîne que ces tables de pages du noyau invoquent un constructeur de table de pages, et nécessite donc un destructeur de table de pages.

Les destructeurs ne sont pas toujours présents, comme pour les tables de pages allouées tôt dans la carte directe). Appeler conditionnellement pagetable_dtor_free() si le drapeau folio PG_table pour ptdesc est défini, sinon nous libérons la table de pages via pagetable_free().

Quel que soit le chemin emprunté, les tables de pages marquées comme des tables de pages du noyau, qui incluent désormais les tables de pages fractionnées, suivent le bon itinéraire à travers pagetable_free_kernel().

Il y a un effet secondaire visible par l'utilisateur en ce sens que les tables de pages fractionnées apparaîtront dans nr_page_table_pages dans /proc/vmstat (comme d'autres tables de pages du noyau allouées après le démarrage précoce), mais il s'agit d'un changement positif.

Ce problème est devenu nettement problématique après le commit :

5ba2f0a15564 ("mm: introduce deferred freeing for kernel page tables")

donc choisissez ceci comme cible de correction (Fixes).

[ dhansen : reformuler à l'impératif ]

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Réserver

24/09/2026

Divulgation

25/09/2026

Modérer

accepté

Entrée

VDB-409915

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Want to stay up to date on a daily basis?

Enable the mail alert feature now!