CVE-2026-89958 in Linuxinformação

Sumário

de VulDB • 16/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

s390/vfio-ap: Corrige o dereference de matrix_mdev->kvm sem verificar se é NULL

A estrutura ap_driver possui dois campos que são ponteiros para funções de callbacks:

* .on_config_changed: chamado no início da função de varredura do barramento AP para notificar o driver do dispositivo de que a configuração AP do host mudou e os dispositivos AP associados serão adicionados ou removidos conforme o caso. Isso dá ao implementador uma chance de avaliar as alterações na configuração e respondê-las antes que os dispositivos associados sejam adicionados ou removidos.

* .on_scan_complete: chamado no final da função de varredura do barramento AP para notificar o driver do dispositivo de que a configuração AP do host mudou e os dispositivos AP foram adicionados ou removidos conforme o caso. Isso dá ao implementador a oportunidade de responder às alterações após os dispositivos associados serem adicionados ou removidos.

Esses dois callbacks são implementados no driver de dispositivo vfio_ap através das funções vfio_ap_on_cfg_changed e vfio_ap_on_scan_complete, respectivamente.

Dentro da pilha de chamadas dessas duas funções de callback, o mutex matrix_mdev->kvm->lock é adquirido sem verificar se matrix_mdev->kvm é NULL ou não. Se matrix_mdev->kvm nunca foi definido, tentar adquirir o lock acionará um dereference de ponteiro NULL. Este patch adiciona verificações para matrix_mdev->kvm == NULL antes de adquirir o mutex matrix_mdev->kvm->lock.

Observe que o mutex matrix_mdev->kvm->lock adquirido na função vfio_ap_mdev_hot_plug_config é movido para a função chamadora junto com o matrix_dev->mdevs_lock, que é necessário ali para acessar os campos da estrutura matrix_mdev. Faz pouco sentido fazer essa alteração verificando se matrix_mdev->kvm é NULL antes de adquirir o mutex kvm->lock apenas para ter que mover essa verificação em outro patch posterior; portanto, isso é feito neste patch.

É importante notar o seguinte: 1. O mutex matrix_dev->guests_lock é adquirido no início das duas funções de callback. Isso garante que matrix_mdev não será removido pela função vfio_ap_mdev_remove, pois ela também adquire matrix_dev_guests_lock antes de remover o objeto; assim, matrix_mdev estará disponível durante a duração das funções de callback.

2. O mutex matrix_dev->mdevs_lock deve ser adquirido para acessar os campos dentro da estrutura matrix_mdev.

3. O mutex matrix_mdev->kvm->lock deve ser adquirido antes do matrix_dev->mdevs_lock para evitar um erro (splat) no lockdep.

4. O kvm->lock deve estar mantido enquanto se pluga a configuração AP do convidado na descrição de estado SIE dele através da função vfio_ap_mdev_update_guest_apcb.

5. A função vfio_ap_mdev_update_guest_apcb verifica matrix_mdev->kvm para garantir que não é NULL antes de realizar o hot plug (conexão a quente) da configuração AP do convidado.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsável

Linux

Reservar

11/09/2026

Divulgação

16/09/2026

Moderação

aceite

Entrada

VDB-405807

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Want to know what is going to be exploited?

We predict KEV entries!