On Thu, 21 Aug 2025, Markus Elfring wrote:
…
Ensure min_align is not increased by the relaxed tail alignment.
…
… +++ b/drivers/pci/setup-bus.c … @@ -1261,8 +1263,9 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, if (bus->self && size1 && !pbus_upstream_space_available(bus, mask | IORESOURCE_PREFETCH, type, size1, add_align)) {
min_align = 1ULL << (max_order + __ffs(SZ_1M));
min_align = max(min_align, win_align);
relaxed_align = 1ULL << (max_order + __ffs(SZ_1M));
relaxed_align = max(min_align, win_align);
…
I wonder why a variable content would be overwritten here without using the previous value. https://cwe.mitre.org/data/definitions/563.html
Hi Markus,
This looks a very good catch. I think it too should have been:
relaxed_align = max(relaxed_align, win_align);
...like in the other case.