From: Pali Rohár Date: Thu, 18 May 2023 19:36:50 +0000 (+0200) Subject: libpci: ecam: Fix big address range mappings X-Git-Tag: v3.11.0~67 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=93c1c6bcc9e2b52652b859986354ddd54ef34058;p=pciutils.git libpci: ecam: Fix big address range mappings If more buses span continuous address space then there can be up to the 256 MB long address range which ecam backend tries to map. Such huge space cannot be mapped on some memory limited systems. And also it is not needed to map whole 256 MB long address range because ecam backend cache uses mapping only for one bus. One bus has maximal mapping size just 32*8*4096 bytes. So adjust size calculation when mapping ecam bus. --- diff --git a/lib/ecam.c b/lib/ecam.c index f4d2e9b..e2b9412 100644 --- a/lib/ecam.c +++ b/lib/ecam.c @@ -630,6 +630,9 @@ calculate_bus_addr(u8 start_bus, off_t start_addr, u32 total_length, u8 bus, off *addr = start_addr + offset; *length = total_length - offset; + if (*length > 32*8*4096) + *length = 32*8*4096; + return 1; }