diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c index 880c3de5249c..39eb1ac4bc91 100644 --- a/drivers/pci/host/pcie-rockchip.c +++ b/drivers/pci/host/pcie-rockchip.c @@ -385,7 +385,7 @@ static int rockchip_pcie_rd_other_conf(struct rockchip_pcie *rockchip, busdev = PCIE_ECAM_ADDR(bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where); - if (!IS_ALIGNED(busdev, size)) { + if (!IS_ALIGNED(busdev, size) || busdev >= SZ_1M) { *val = 0; return PCIBIOS_BAD_REGISTER_NUMBER; } @@ -411,7 +411,7 @@ static int rockchip_pcie_wr_other_conf(struct rockchip_pcie *rockchip, busdev = PCIE_ECAM_ADDR(bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where); - if (!IS_ALIGNED(busdev, size)) + if (!IS_ALIGNED(busdev, size) || busdev >= SZ_1M) return PCIBIOS_BAD_REGISTER_NUMBER; if (size == 4)