• Bjorn Helgaas's avatar
    PCI: iproc: Save host bridge window resource in struct iproc_pcie · 6e347b5e
    Bjorn Helgaas authored
    The host bridge memory window resource is inserted into the iomem_resource
    tree and cannot be deallocated until the host bridge itself is removed.
    
    Previously, the window was on the stack, which meant the iomem_resource
    entry pointed into the stack and was corrupted as soon as the probe
    function returned, which caused memory corruption and errors like this:
    
      pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
    
    Move the memory window resource from the stack into struct iproc_pcie so
    its lifetime matches that of the host bridge.
    
    Fixes: c3245a56 ("PCI: iproc: Request host bridge window resources")
    Reported-and-tested-by: default avatarRafał Miłecki <zajec5@gmail.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org	# v4.8+
    6e347b5e
pcie-iproc.h 3.53 KB