]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
pci: layerscape: Change to allocate zeroed memery for struct ls_pcie
authorHou Zhiqiang <Zhiqiang.Hou@nxp.com>
Thu, 11 Mar 2021 07:30:51 +0000 (15:30 +0800)
committerPriyanka Jain <priyanka.jain@nxp.com>
Tue, 23 Mar 2021 12:36:07 +0000 (18:06 +0530)
As on some incipient Layerscape platforms (LS1043A series) there isn't
separate PF control register block, these registers reside in the LUT
register block, so when the driver detected there isn't 'ctrl', it will
assign the 'lut' address to the ls_pcie->ctrl.

The current code allocate memory for the struct ls_pcie with random
contents, this can result in skipping to assign the ls_pcie->ctrl with
the 'lut' address, then further crash with the incorrect address.

Fixes: 118e58e26eba ("pci: layerscape: Split the EP and RC driver")
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
drivers/pci/pcie_layerscape_ep.c
drivers/pci/pcie_layerscape_rc.c

index 14983cce4f2bb26463d872efe8dfc78f65c1c4e3..c7231635e413c5fa1a84a3e22787319a9f9cd1ab 100644 (file)
@@ -244,7 +244,7 @@ static int ls_pcie_ep_probe(struct udevice *dev)
        int ret;
        u32 svr;
 
-       pcie = devm_kmalloc(dev, sizeof(*pcie), GFP_KERNEL);
+       pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
        if (!pcie)
                return -ENOMEM;
 
index b055ed516546054180ccbd3832d00c63473abec8..bd2c19f7f0c9239624ec6fafe05f3d8b9f56e822 100644 (file)
@@ -254,7 +254,7 @@ static int ls_pcie_probe(struct udevice *dev)
 
        pcie_rc->bus = dev;
 
-       pcie = devm_kmalloc(dev, sizeof(*pcie), GFP_KERNEL);
+       pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
        if (!pcie)
                return -ENOMEM;