>> … >> +++ 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