Patch "PCI: iproc: Fix NULL pointer dereference for BCMA" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
PCI: iproc: Fix NULL pointer dereference for BCMA
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
pci-iproc-fix-null-pointer-dereference-for-bcma.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
3b65ca50d24ce33cb92d88840e289135c92b40edMon Sep 17 00:00:00 2001
From: Ray Jui <[email protected]>
Date: Thu, 11 Jan 2018 12:36:16 -0800
Subject: PCI: iproc: Fix NULL pointer dereference for BCMA
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Ray Jui <[email protected]>
commit 3b65ca50d24ce33cb92d88840e289135c92b40ed upstream.
With the inbound DMA mapping supported added, the iProc PCIe driver parses DT property "dma-ranges" through call to "of_pci_dma_range_parser_init()". In the case of BCMA, this results in a NULL pointer deference due to a missing of_node.
Fix this by adding a guard in pcie-iproc-platform.c to only enable the inbound DMA mapping logic when DT property "dma-ranges" is present.
--- drivers/pci/host/pcie-iproc-platform.c | 7 +++++++ drivers/pci/host/pcie-iproc.c | 8 +++++--- drivers/pci/host/pcie-iproc.h | 2 ++ 3 files changed, 14 insertions(+), 3 deletions(-)
drivers/pci/host/pcie-iproc-platform.c +7 -0
@@ -92,6 +92,13 @@ static int iproc_pcie_pltfm_probe(struct pcie->need_ob_cfg = true; } +/* +* DT nodes are not used by all platforms that use the iProc PCIe +* core driver. For platforms that require explict inbound mapping +* configuration, "dma-ranges" would have been present in DT +*/ + pcie->need_ib_cfg =of_property_read_bool (np,"dma-ranges" ); +/* PHY use is optional */ pcie->phy =devm_phy_get (dev,"pcie-phy" );if (IS_ERR (pcie->phy)) {
drivers/pci/host/pcie-iproc.c +5 -3
@@ -1396,9 +1396,11 @@ int iproc_pcie_setup(struct iproc_pcie * } } - ret =iproc_pcie_map_dma_ranges (pcie); -if (ret && ret != -ENOENT ) - goto err_power_off_phy; +if (pcie->need_ib_cfg) { + ret =iproc_pcie_map_dma_ranges (pcie); +if (ret && ret != -ENOENT ) + goto err_power_off_phy; + }#ifdef CONFIG_ARM pcie->sysdata.private_data = pcie;
drivers/pci/host/pcie-iproc.h +2 -0
@@ -74,6 +74,7 @@ struct iproc_msi;* @ob: outbound mapping related parameters * @ob_map: outbound mapping related parameters specific to the controller * +* @need_ib_cfg: indicates SW needs to configure the inbound mapping window * @ib: inbound mapping related parameters * @ib_map: outbound mapping region related parameters *
@@ -101,6 +102,7 @@ struct iproc_pcie {struct iproc_pcie_ob ob;const struct iproc_pcie_ob_map *ob_map; +bool need_ib_cfg;struct iproc_pcie_ib ib;const struct iproc_pcie_ib_map *ib_map;
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/pci-iproc-fix-null-pointer-dereference-for-bcma.patch