summaryrefslogtreecommitdiffstats
path: root/drivers/pci/dwc/pcie-designware-plat.c
diff options
context:
space:
mode:
authorGuenter Roeck2017-02-25 11:08:12 +0100
committerBjorn Helgaas2017-02-25 16:06:02 +0100
commitc0464062bfea9cd2ef6643d93429eafe8f6c2a4a (patch)
tree7e2946056d89babfe5d50cb25c9c6f984ec33521 /drivers/pci/dwc/pcie-designware-plat.c
parentMerge tag 'openrisc-for-linus' of git://github.com/openrisc/linux (diff)
downloadkernel-qcow2-linux-c0464062bfea9cd2ef6643d93429eafe8f6c2a4a.tar.gz
kernel-qcow2-linux-c0464062bfea9cd2ef6643d93429eafe8f6c2a4a.tar.xz
kernel-qcow2-linux-c0464062bfea9cd2ef6643d93429eafe8f6c2a4a.zip
PCI: dwc: Fix crashes seen due to missing assignments
Fix the following crash, seen in dwc/pci-imx6. Unable to handle kernel NULL pointer dereference at virtual address 00000070 pgd = c0004000 [00000070] *pgd=00000000 Internal error: Oops: 805 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.10.0-09686-g9e31489 #1 Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) task: cb850000 task.stack: cb84e000 PC is at imx6_pcie_probe+0x2f4/0x414 ... While at it, fix the same problem in various drivers instead of waiting for individual crash reports. The change in the imx6 driver was tested with qemu. The changes in other drivers are based on code inspection and have been compile tested only. Fixes: 442ec4c04d12 ("PCI: dwc: all: Split struct pcie_port into host-only and core structures") Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> # designware-plat Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Diffstat (limited to 'drivers/pci/dwc/pcie-designware-plat.c')
-rw-r--r--drivers/pci/dwc/pcie-designware-plat.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/pci/dwc/pcie-designware-plat.c b/drivers/pci/dwc/pcie-designware-plat.c
index 65250f63515c..b6c832ba39dd 100644
--- a/drivers/pci/dwc/pcie-designware-plat.c
+++ b/drivers/pci/dwc/pcie-designware-plat.c
@@ -104,6 +104,8 @@ static int dw_plat_pcie_probe(struct platform_device *pdev)
pci->dev = dev;
+ dw_plat_pcie->pci = pci;
+
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
pci->dbi_base = devm_ioremap_resource(dev, res);
if (IS_ERR(pci->dbi_base))