CVE-2026-89956 in Linuxinformation

Résumé

par VulDB • 16/09/2026

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

s390/vfio-ap : Correction de l'absence du verrou requis pour accéder à la liste des objets ap_matrix_mdev

Afin de parcourir ou d'ajouter/supprimer des objets ap_matrix_mdev dans matrix_dev->mdev_list, le mutex matrix_dev->guests_lock doit être acquis. Il existe deux fonctions qui accèdent à cette liste sans acquérir ce verrou :

Fonction vfio_ap_mdev_probe ~~~~~~~~~~~~~~~~~~~~~~~~~~~ La fonction vfio_ap_mdev_probe utilise le mutex matrix_dev->mdevs_lock pour protéger l'ajout d'un objet ap_matrix_mdev nouvellement créé dans la matrice_dev->mdev_list. Ce mutex ne protège pas l'accès à la liste ; son objectif est de se prémunir contre un accès concurrent aux champs contenus dans un objet ap_matrix_mdev. Cela pourrait entraîner une corruption de la mémoire du noyau ou un use-after-free si un autre mdev est créé ou supprimé simultanément.

L'ajout d'un objet ap_matrix_mdev à matrix_dev->mdev_list est désormais protégé par le mutex matrix_dev->guests_lock, qui constitue la bonne méthode pour se protéger contre les accès concurrents à la liste mdev_list.

Les deux lignes de code suivantes ont également été supprimées car l'objet matrix_mdev est alloué via la macro vfio_alloc_device qui utilise kzalloc ; ainsi, req_trigger et cfg_chg_trigger sont déjà initialisés à zéro lors de l'allocation de la structure avant l'appel à vfio_register_emulated_iommu_dev. Cela empêche une fenêtre d'opportunité où ces déclencheurs (triggers) seraient définis sur NULL après que le périphérique a été exposé aux utilisateurspace.

matrix_mdev->req_trigger = NULL ; matrix_mdev->cfg_chg_trigger = NULL ;

Fonction vfio_ap_mdev_for_queue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ La fonction status_show, qui permet l'affichage de l'attribut d'état des périphériques dans /sys/bus/ap/devices, appelle la fonction vfio_ap_mdev_for_queue. Cette dernière parcourt matrix_dev->mdev_list pour trouver l'objet représentant le périphérique de file (queue device) dont l'état doit être affiché. Afin de parcourir cette liste, le mutex matrix_dev->guests_lock doit être acquis.

Pour corriger cela, le mutex guests_lock est acquis avant d'acquérir le mutex matrix_dev->mdevs_lock dans la fonction status_show. Il est placé ici plutôt que dans la fonction vfio_ap_mdev_for_queue (où il est nécessaire) car il doit être acquis avant le mutex mdevs_lock afin de respecter l'ordre correct des verrous et d'éviter un avertissement lockdep ; également parce que le mdevs_lock y est requis pour accéder aux champs contenus dans l'objet matrix_mdev au sein de cette fonction.

Voir vfio-ap-locking.rst dans l'arborescence du noyau Linux.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Réserver

11/09/2026

Divulgation

16/09/2026

Modérer

accepté

Entrée

VDB-405805

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Interested in the pricing of exploits?

See the underground prices here!