… +++ 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
…> 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.
Did any known source code analysis tools point such a questionable implementation detail out for further development considerations?
Regards, Markus