SRU Justification: Impact: The mm zone page calculations are being miscalculated because of a previous commit.
Fix: Add parentheses around >> operators in setup_per_zone_pages_min() to correct the calculation. Elaboration here: originally the calculation was: zone->pages_low = zone->pages_min + tmp / 4; zone->pages_high = zone->pages_min + tmp / 2; commit 622f7b4c920a9362d506400c0da02e3e06442b27 changed it to: zone->pages_low = zone->pages_min + tmp >> 2; zone->pages_high = zone->pages_min + tmp >> 1; unfortunately the + operator has higher precedence than >> hence the bug. it should be: zone->pages_low = zone->pages_min + (tmp >> 2); zone->pages_high = zone->pages_min + (tmp >> 1); Testcase: One can see the zonelist from /proc/zoneinfo: The low and high water marks should be different between the buggy and fixed versions. Testing: 1. Install 6.0.6 LTS i386 Server in VirtualBox and recording /proc/zoneinfo from /etc/rc.local to capture the zoneline low and high settings at boot time. 2. Booted up 3 times to see if the figures differ per boot (they don't). 3. Installed the fixed kernel and repeated the 3 boot test 4. Compare the buggy and fixed /proc/zoneinfo logs, e.g: Buggy Fixed low 15 38 high 31 46 Attached: zone info logs for the two cases ** Attachment added: "/proc/zoneinfo for broken buggy version" http://launchpadlibrarian.net/17287900/zoneinfo_buggy.log -- Precedence bug in patch https://bugs.launchpad.net/bugs/86778 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs