title: vfio/pci: Disable auto-enable of exclusive INTx IRQ
description: In the Linux kernel, the following vulnerability has been resolved:
vfio/pci: Disable auto-enable of exclusive INTx IRQ
Currently for devices requiring masking at the irqchip for INTx, ie.
devices without DisINTx support, the IRQ is enabled in request_irq()
and subsequently disabled as necessary to align with the masked status
flag.  This presents a window where the interrupt could fire between
these events, resulting in the IRQ incrementing the disable depth twice.
This would be unrecoverable for a user since the masked flag prevents
nested enables through vfio.
Instead, invert the logic using IRQF_NO_AUTOEN such that exclusive INTx
is never auto-enabled, then unmask as required.
affected:
{
product: Linux
vendor: Linux
defaultStatus: unaffected
repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
versions:
version: 89e1f7d4c66d, lessThan: 139dfcc4d723, status: affected, versionType: git
version: 89e1f7d4c66d, lessThan: 2a4a666c4510, status: affected, versionType: git
version: 89e1f7d4c66d, lessThan: 3b3491ad0f80, status: affected, versionType: git
version: 89e1f7d4c66d, lessThan: bf0bc84a20e6, status: affected, versionType: git
version: 89e1f7d4c66d, lessThan: fe9a7082684e, status: affected, versionType: git
}
{
product: Linux
vendor: Linux
defaultStatus: affected
repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
versions:
version: 3.6, status: affected
version: 0, lessThan: 3.6, status: unaffected, versionType: custom
version: 6.1.84, lessThanOrEqual: 6.1.*, status: unaffected, versionType: custom
version: 6.6.24, lessThanOrEqual: 6.6.*, status: unaffected, versionType: custom
version: 6.7.12, lessThanOrEqual: 6.7.*, status: unaffected, versionType: custom
version: 6.8.3, lessThanOrEqual: 6.8.*, status: unaffected, versionType: custom
version: 6.9-rc1, lessThanOrEqual: *, status: unaffected, versionType: original_commit_for_fix
}
