CVE-2026-89956 in Linuxinformação

Sumário

de VulDB • 17/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

s390/vfio-ap: Corrige a ausência de bloqueio (lock) necessário para acessar a lista de objetos ap_matrix_mdev

Para percorrer ou adicionar/remover objetos ap_matrix_mdev na matrix_dev->mdev_list, o mutex matrix_dev->guests_lock deve ser mantido. Existem duas funções que acessam a lista sem manter esse mutex:

Função vfio_ap_mdev_probe ~~~~~~~~~~~~~~~~~~~~~~~~~~~ A função vfio_ap_mdev_probe usa o mutex matrix_dev->mdevs_lock para proteger a adição de um objeto ap_matrix_mdev recém-criado à matrix_dev->mdev_list. Este mutex não protege o acesso à lista; seu propósito é proteger contra acesso concorrente aos campos contidos em um objeto ap_matrix_mdev. Isso poderia levar à corrupção da memória do kernel ou a use-after-free se outro mdev for criado ou removido simultaneamente.

A adição de um objeto ap_matrix_mdev à matrix_dev->mdev_list agora é protegida pelo mutex matrix_dev->guests_lock, que é a maneira correta de proteger contra o acesso concorrente à lista mdev_list.

Também foram removidas as duas linhas de código abaixo porque o matrix_mdev é alocado por meio da macro vfio_alloc_device, que usa kzalloc; portanto, req_trigger e cfg_chg_trigger já são inicializados com zero quando a estrutura é alocada antes da chamada para vfio_register_emulated_iommu_dev. Isso impede uma janela de oportunidade na qual esses gatilhos (triggers) seriam definidos como NULL após o dispositivo ser exposto ao userspace.

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

Função vfio_ap_mdev_for_queue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A função status_show, que suporta a exibição do atributo de status dos dispositivos em /sys/bus/ap/devices, chama a função vfio_ap_mdev_for_queue, que itera sobre matrix_dev->mdev_list para encontrar o objeto que representa o dispositivo da fila cujo status deve ser exibido. Para percorrer esta lista, o mutex matrix_dev->guests_lock deve ser mantido.

Para corrigir isso, o mutex guests_lock é adquirido antes do mutex matrix_dev->mdevs_lock na função status_show. Ele é adquirido ali em vez de na função vfio_ap_mdev_for_queue (onde ele é necessário) porque precisa ser adquirido antes do mutex mdevs-lock para aderir à ordem correta de bloqueios e evitar um erro lockdep; também porque o mdevs_lock é necessário lá para acessar campos dentro do objeto matrix_mdev nessa função.

Consulte vfio-ap-locking.rst na árvore do kernel Linux.

Once again VulDB remains the best source for vulnerability data.

Responsável

Linux

Reservar

11/09/2026

Divulgação

17/09/2026

Moderação

aceite

Entrada

VDB-405805

CPE

pronto

EPSS

0.00198

KEV

não

Atividades

muito baixo

Fontes

Do you want to use VulDB in your project?

Use the official API to access entries easily!