[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1476700772-18745-1-git-send-email-marc.zyngier@arm.com>
Date: Mon, 17 Oct 2016 11:39:32 +0100
From: Marc Zyngier <marc.zyngier@....com>
To: Bjorn Helgaas <bhelgaas@...gle.com>,
Minghuan Lian <minghuan.Lian@...escale.com>,
Mingkai Hu <mingkai.hu@...escale.com>,
Roy Zang <tie-fei.zang@...escale.com>
Cc: linux-kernel@...r.kernel.org, linux-pci@...r.kernel.org
Subject: [PATCH] PCI: layerscape: Fix drvdata usage before assignment
Commit fefe6733e516 ("PCI: layerscape: Move struct pcie_port setup
to probe function") changed the init ordering of the pcie structure,
but started to use the pcie->drvdata field before initializing it.
Mayhem follows.
Fix this by moving the drvdata assignment right before the first use.
Tested on LS2085a.
Signed-off-by: Marc Zyngier <marc.zyngier@....com>
---
drivers/pci/host/pci-layerscape.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c
index 856d428..27602a3 100644
--- a/drivers/pci/host/pci-layerscape.c
+++ b/drivers/pci/host/pci-layerscape.c
@@ -270,6 +270,7 @@ static int __init ls_pcie_probe(struct platform_device *pdev)
pp = &pcie->pp;
pp->dev = dev;
+ pcie->drvdata = match->data;
pp->ops = pcie->drvdata->ops;
dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
@@ -279,7 +280,6 @@ static int __init ls_pcie_probe(struct platform_device *pdev)
return PTR_ERR(pcie->pp.dbi_base);
}
- pcie->drvdata = match->data;
pcie->lut = pcie->pp.dbi_base + pcie->drvdata->lut_offset;
if (!ls_pcie_is_bridge(pcie))
--
2.1.4
Powered by blists - more mailing lists