* [merged mm-stable] selftests-cgroup-test_zswap-fix-implicit-unsigned-promotion-bug-in-test_no_kmem_bypass.patch removed from -mm tree
@ 2026-10-07 0:50 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2026-10-07 0:50 UTC (permalink / raw)
To: mm-commits, tj, shuah, nphamcs, mkoutny, hannes, chengming.zhou,
wfelipe, akpm
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3218 bytes --]
The quilt patch titled
Subject: selftests/cgroup: test_zswap: fix implicit unsigned promotion bug in test_no_kmem_bypass
has been removed from the -mm tree. Its filename was
selftests-cgroup-test_zswap-fix-implicit-unsigned-promotion-bug-in-test_no_kmem_bypass.patch
This patch was dropped because it was merged into the mm-stable branch
of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Wilson Felipe Pereira <wfelipe@google.com>
Subject: selftests/cgroup: test_zswap: fix implicit unsigned promotion bug in test_no_kmem_bypass
Date: Fri, 28 Aug 2026 03:37:32 +0000
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 long long and comparing
against a signed threshold, ensuring negative deltas correctly evaluate to
true.
Link: https://lore.kernel.org/20260828033741.2184560-3-wfelipe@google.com
Fixes: a549f9f31561a ("selftests: cgroup: add test_zswap with no kmem bypass test")
Signed-off-by: Wilson Felipe Pereira <wfelipe@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Michal Koutný <mkoutny@suse.com>
Cc: Chengming Zhou <chengming.zhou@linux.dev>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Nhat Pham <nphamcs@gmail.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
---
tools/testing/selftests/cgroup/test_zswap.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
--- a/tools/testing/selftests/cgroup/test_zswap.c~selftests-cgroup-test_zswap-fix-implicit-unsigned-promotion-bug-in-test_no_kmem_bypass
+++ a/tools/testing/selftests/cgroup/test_zswap.c
@@ -654,11 +654,14 @@ static int test_no_kmem_bypass(const cha
break;
/* If memory was pushed to zswap, verify it belongs to memcg */
if (stored_pages > stored_pages_threshold) {
- int zswapped = cg_read_key_long(test_group, "memory.stat", "zswapped ");
- int delta = stored_pages * page_size - zswapped;
- int result_ok = delta < stored_pages * page_size / 4;
+ long zswapped = cg_read_key_long(
+ test_group, "memory.stat", "zswapped ");
+ long long delta =
+ (long long)stored_pages * page_size - zswapped;
+ long long max_delta =
+ (long long)stored_pages * page_size / 4;
- ret = result_ok ? KSFT_PASS : KSFT_FAIL;
+ ret = (delta < max_delta) ? KSFT_PASS : KSFT_FAIL;
break;
}
}
_
Patches currently in -mm which might be from wfelipe@google.com are
mm-zswap-convert-zswap_store_page-and-zswap_compress-to-take-a-folio.patch
init-main-fix-off-by-one-in-argv_init-cleanup.patch
init-main-fix-false-positive-kernel-panic-on-environment-variable-overwrite.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-07 0:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-07 0:50 [merged mm-stable] selftests-cgroup-test_zswap-fix-implicit-unsigned-promotion-bug-in-test_no_kmem_bypass.patch removed from -mm tree Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.