CVE-2026-23361 in Linuxinformazioni

Riassunto

di VulDB • 16/06/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

PCI: dwc: ep: Effettuare il flush della scrittura MSI-X prima di rimuovere la mappatura dell'entry ATU corrispondente

I driver Endpoint utilizzano `dw_pcie_ep_raise_msix_irq()` per generare un interrupt MSI-X verso l'host tramite una chiamata a `writel()`, che genera una transazione PCI posted write. Non esiste alcun completamento esplicito per le scritture posted, pertanto la funzione `writel()` può restituire il controllo prima che la scrittura PCI sia effettivamente completata. La funzione `dw_pcie_ep_raise_msix_irq()` rimuove inoltre la mappatura dell'entry ATU in uscita (outbound) utilizzata per la scrittura PCI; di conseguenza, si verifica una condizione di race condition tra la scrittura e l'operazione di rimozione della mappatura.

Se la scrittura PCI perde la gara rispetto alla rimozione della mappatura ATU, tale operazione potrebbe corrompere la memoria dell'host o causare errori IOMMU. Ad esempio, sono stati osservati i seguenti messaggi durante l'esecuzione di `fio` con una profondità di coda maggiore contro il modulo `nvmet-pci-epf`:

arm-smmu-v3 fc900000.iommu: 0x0000010000000010 arm-smmu-v3 fc900000.iommu: 0x0000020000000000 arm-smmu-v3 fc900000.iommu: 0x000000090000f040 arm-smmu-v3 fc900000.iommu: 0x0000000000000000 arm-smmu-v3 fc900000.iommu: event: F_TRANSLATION client: 0000:01:00.0 sid: 0x100 ssid: 0x0 iova: 0x90000f040 ipa: 0x0 arm-smmu-v3 fc900000.iommu: unpriv data write s1 "Input address caused fault" stag: 0x0

Per risolvere il problema, viene effettuato il flush della scrittura eseguendo una lettura (`readl()`) dello stesso indirizzo, garantendo così che la scrittura sia giunta a destinazione prima che l'entry ATU venga rimossa.

Lo stesso problema era stato risolto per `dw_pcie_ep_raise_msi_irq()` nel commit 8719c64e76bf ("PCI: dwc: ep: Cache MSI outbound iATU mapping"), ma in quel caso la soluzione consisteva nell'assegnare un'entry iATU in uscita dedicata esclusivamente agli interrupt MSI. Non è possibile adottare lo stesso approccio per gli interrupt MSI-X, poiché ogni vettore può avere un `msg_addr` diverso e tale indirizzo potrebbe essere modificato mentre il vettore è mascherato (masked).

[bhelgaas: commit log]

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

Responsabile

Linux

Prenotare

13/01/2026

Divulgazione

25/03/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00129

KEV

no

Attività

molto basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!