Blob Blame History Raw
From: Bharat Gooty <bharat.gooty@broadcom.com>
Date: Thu, 1 Oct 2020 11:30:52 +0530
Subject: PCI: iproc: Fix out-of-bound array accesses
Git-commit: a3ff529f5d368a17ff35ada8009e101162ebeaf9
Patch-mainline: 5.11-rc1
References: git-fixes

Declare the full size array for all revisions of PAX register sets
to avoid potentially out of bound access of the register array
when they are being initialized in iproc_pcie_rev_init().

Link: https://lore.kernel.org/r/20201001060054.6616-2-srinath.mannam@broadcom.com
Fixes: 06324ede76cdf ("PCI: iproc: Improve core register population")
Signed-off-by: Bharat Gooty <bharat.gooty@broadcom.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/pci/host/pcie-iproc.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

--- a/drivers/pci/host/pcie-iproc.c
+++ b/drivers/pci/host/pcie-iproc.c
@@ -303,7 +303,7 @@ enum iproc_pcie_reg {
 };
 
 /* iProc PCIe PAXB BCMA registers */
-static const u16 iproc_pcie_reg_paxb_bcma[] = {
+static const u16 iproc_pcie_reg_paxb_bcma[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]         = 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]     = 0x120,
 	[IPROC_PCIE_CFG_IND_DATA]     = 0x124,
@@ -314,7 +314,7 @@ static const u16 iproc_pcie_reg_paxb_bcm
 };
 
 /* iProc PCIe PAXB registers */
-static const u16 iproc_pcie_reg_paxb[] = {
+static const u16 iproc_pcie_reg_paxb[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]         = 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]     = 0x120,
 	[IPROC_PCIE_CFG_IND_DATA]     = 0x124,
@@ -330,7 +330,7 @@ static const u16 iproc_pcie_reg_paxb[] =
 };
 
 /* iProc PCIe PAXB v2 registers */
-static const u16 iproc_pcie_reg_paxb_v2[] = {
+static const u16 iproc_pcie_reg_paxb_v2[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]         = 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]     = 0x120,
 	[IPROC_PCIE_CFG_IND_DATA]     = 0x124,
@@ -358,7 +358,7 @@ static const u16 iproc_pcie_reg_paxb_v2[
 };
 
 /* iProc PCIe PAXC v1 registers */
-static const u16 iproc_pcie_reg_paxc[] = {
+static const u16 iproc_pcie_reg_paxc[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]         = 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]     = 0x1f0,
 	[IPROC_PCIE_CFG_IND_DATA]     = 0x1f4,
@@ -367,7 +367,7 @@ static const u16 iproc_pcie_reg_paxc[] =
 };
 
 /* iProc PCIe PAXC v2 registers */
-static const u16 iproc_pcie_reg_paxc_v2[] = {
+static const u16 iproc_pcie_reg_paxc_v2[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_MSI_GIC_MODE]     = 0x050,
 	[IPROC_PCIE_MSI_BASE_ADDR]    = 0x074,
 	[IPROC_PCIE_MSI_WINDOW_SIZE]  = 0x078,