lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 242/717] PCI: iproc: Fix out-of-bound array accesses
    Date
    From: Bharat Gooty <bharat.gooty@broadcom.com>

    [ Upstream commit a3ff529f5d368a17ff35ada8009e101162ebeaf9 ]

    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: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pci/controller/pcie-iproc.c | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
    index 905e938082432..d901b9d392b8c 100644
    --- a/drivers/pci/controller/pcie-iproc.c
    +++ b/drivers/pci/controller/pcie-iproc.c
    @@ -307,7 +307,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,
    @@ -318,7 +318,7 @@ static const u16 iproc_pcie_reg_paxb_bcma[] = {
    };

    /* 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,
    @@ -334,7 +334,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,
    @@ -363,7 +363,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,
    @@ -372,7 +372,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,
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 15:12    [W:2.193 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site