Subject: CVE-2024-27437: vfio/pci: Disable auto-enable of exclusive INTx IRQ

From: Greg Kroah-Hartman <[email-masked]>

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.

The Linux kernel CVE team has assigned CVE-2024-27437 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 5.4.274 with commit 26389925d6c2
	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 5.10.215 with commit 561d5e1998d5
	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 5.15.154 with commit b7a2f0955ffc
	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 6.1.84 with commit 139dfcc4d723
	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 6.6.24 with commit 2a4a666c4510
	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 6.7.12 with commit 3b3491ad0f80
	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 6.8.3 with commit bf0bc84a20e6
	Issue introduced in 3.6 with commit 89e1f7d4c66d and fixed in 6.9 with commit fe9a7082684e

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-27437
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/vfio/pci/vfio_pci_intrs.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/26389925d6c2126fb777821a0a983adca7ee6351
	https://git.kernel.org/stable/c/561d5e1998d58b54ce2bbbb3e843b669aa0b3db5
	https://git.kernel.org/stable/c/b7a2f0955ffceffadfe098b40b50307431f45438
	https://git.kernel.org/stable/c/139dfcc4d723ab13469881200c7d80f49d776060
	https://git.kernel.org/stable/c/2a4a666c45107206605b7b5bc20545f8aabc4fa2
	https://git.kernel.org/stable/c/3b3491ad0f80d913e7d255941d4470f4a4d9bfda
	https://git.kernel.org/stable/c/bf0bc84a20e6109ab07d5dc072067bd01eb931ec
	https://git.kernel.org/stable/c/fe9a7082684eb059b925c535682e68c34d487d43