From 134207319765c2ffe05bd92c3ca3aca2ff34c1da Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 9 Jul 2024 11:40:57 -0400 Subject: [PATCH] PCI: Avoid overflows in ReadResourceInfo. The operation should be promoted to at least 32-bits anyway, but it's better to be safe here. --- src/add-ons/kernel/busses/pci/ecam/ECAMPCIControllerACPI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/kernel/busses/pci/ecam/ECAMPCIControllerACPI.cpp b/src/add-ons/kernel/busses/pci/ecam/ECAMPCIControllerACPI.cpp index f3decc6c54..adb34ff292 100644 --- a/src/add-ons/kernel/busses/pci/ecam/ECAMPCIControllerACPI.cpp +++ b/src/add-ons/kernel/busses/pci/ecam/ECAMPCIControllerACPI.cpp @@ -63,7 +63,7 @@ ECAMPCIControllerACPI::ReadResourceInfo(device_node* parent) fStartBusNumber = alloc->start_bus_number; fEndBusNumber = alloc->end_bus_number; - fRegsLen = (fEndBusNumber - fStartBusNumber + 1) << 20; + fRegsLen = (uint64(fEndBusNumber) - fStartBusNumber + 1) << 20; fRegsArea.SetTo(map_physical_memory("PCI Config MMIO", alloc->address, fRegsLen, B_ANY_KERNEL_ADDRESS, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA, (void **)&fRegs));