On Thu, Aug 27, 2026 at 03:47:42AM +0000, Wilson Felipe Pereira <[email protected]> wrote: > In test_no_kmem_bypass(), delta (stored_pages * page_size - zswapped) is > checked against stored_pages * page_size / 4 to verify that the pages > pushed to zswap belong to the test memory cgroup. > > Due to slight stat update timing differences, delta can evaluate to a small > negative number (e.g. -5MB out of 1GB). Because delta is declared as a > signed int and stored_pages is an unsigned size_t, C's usual arithmetic > conversions implicitly promote a negative delta to a large unsigned 64-bit > integer, causing `delta < stored_pages * page_size / 4` to falsely evaluate > to 0 and fail the test. > > Fix this by declaring zswapped and delta as signed longs and comparing > against a signed threshold, ensuring negative deltas correctly evaluate > to true. > > Fixes: a549f9f31561a ("selftests: cgroup: add test_zswap with no kmem bypass > test") > Signed-off-by: Wilson Felipe Pereira <[email protected]> > --- > tools/testing/selftests/cgroup/test_zswap.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-)
Thanks! Acked-by: Michal Koutný <[email protected]>

