On Wed, 2024-01-31 at 15:09 -0600, Bjorn Helgaas wrote:
On Wed, Jan 31, 2024 at 10:00:20AM +0100, Philipp Stanner wrote:
The #ifdef for the ioport-ranges accidentally also guards iounmap(), potentially compiling an empty function. This would cause the mapping to be leaked.
Move the guard so that iounmap() will always be part of the function.
I tweaked the subject and commit log to be more explicit about what the bug is. Let me know if I got it wrong:
Mostly correct IMO
pci_iounmap(): Fix MMIO mapping leak
The #ifdef ARCH_HAS_GENERIC_IOPORT_MAP accidentally also guards iounmap(), which means MMIO mappings are leaked.
nit: I wasn't entirely sure when they are actually leaked, just that they _could_ be leaked. To know for sure we'd need to search who sets ARCH_WANTS_GENERIC_PCI_IOUNMAP without setting ARCH_HAS_GENERIC_IOPORT_MAP.
I think your formulation should be fine, though, since it's definitely a bug.
P.
Move the guard so we call iounmap() for MMIO mappings.
Bjorn