Message ID | 20220713165449.37433-4-ben.dooks@sifive.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/7] pci: designware: add 64-bit viewport limit | expand |
diff --git a/hw/pci-host/designware.c b/hw/pci-host/designware.c index d213d7324c..6403416634 100644 --- a/hw/pci-host/designware.c +++ b/hw/pci-host/designware.c @@ -345,6 +345,10 @@ static void designware_pcie_root_config_write(PCIDevice *d, uint32_t address, break; case DESIGNWARE_PCIE_ATU_VIEWPORT: + /* clamp this value, linux uses it to calculate the + * available number of viewports */ + if (val >= DESIGNWARE_PCIE_NUM_VIEWPORTS) + val = DESIGNWARE_PCIE_NUM_VIEWPORTS-1; root->atu_viewport = val; break;
The current Linux driver for this assumes it can write the 255 into this register and then read back the value to work out how many viewports are supported. Clamp the value so that the probe works and does not cause memory corruption as the value is not well clamped elsewhere in the driver. Signed-off-by: Ben Dooks <ben.dooks@sifive.com> --- hw/pci-host/designware.c | 4 ++++ 1 file changed, 4 insertions(+)