selftests-cgroup-include-slab-in-test_percpu_basic-memory-check.patch removed from -mm tree
The quilt patch titled
Subject: selftests/cgroup: include slab in test_percpu_basic memory check
has been removed from the -mm tree. Its filename was
selftests-cgroup-include-slab-in-test_percpu_basic-memory-check.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: Li Wang <[email protected]>
Subject: selftests/cgroup: include slab in test_percpu_basic memory check
Date: Fri, 1 May 2026 10:20:58 +0800
test_percpu_basic() currently compares memory.current against only memory.stat:percpu after creating 1000 child cgroups.
Observed failure:
#./test_kmem
ok 1 test_kmem_basic
ok 2 test_kmem_memcg_deletion
ok 3 test_kmem_proc_kpagecgroup
ok 4 test_kmem_kernel_stacks
ok 5 test_kmem_dead_cgroups
memory.current 11530240
percpu 8440000
not ok 6 test_percpu_basic
That assumption is too strict: child cgroup creation also allocates slab-backed metadata, so memory.current is expected to be larger than percpu alone. One visible path is:
cgroup_mkdir()
cgroup_create()
cgroup_addrm_file()
cgroup_add_file()
__kernfs_create_file()
__kernfs_new_node()
kmem_cache_zalloc()These kernfs allocations are charged as slab and show up in memory.stat:slab.
Update the check to compare memory.current against (percpu + slab) within MAX_VMSTAT_ERROR, and print slab/delta in the failure message to improve diagnostics.
---
tools/testing/selftests/cgroup/test_kmem.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
tools/testing/selftests/cgroup/test_kmem.c renamed from tools/testing/selftests/cgroup/test_kmem.c~selftests-cgroup-include-slab-in-test_percpu_basic-memory-check +6 -5
@@ -353,7 +353,7 @@ static int test_percpu_basic(const char {int ret =KSFT_FAIL ;char *parent, *child; -long current, percpu; +long current, percpu, slab;int i; parent =cg_name (root,"percpu_basic_test" );
@@ -383,13 +383,14 @@ static int test_percpu_basic(const char current =cg_read_long (parent,"memory.current" ); percpu =cg_read_key_long (parent,"memory.stat" ,"percpu " ); + slab =cg_read_key_long (parent,"memory.stat" ,"slab " ); -if (current >0 && percpu >0 &&labs (current - percpu) < -MAX_VMSTAT_ERROR ) +if (current >0 && percpu >0 && slab >=0 && +labs (current - (percpu + slab)) <MAX_VMSTAT_ERROR ) ret =KSFT_PASS ;else -printf ("memory.current %ld\npercpu %ld\n" , - current, percpu); +printf ("memory.current %ld\npercpu %ld\nslab %ld\ndelta %ld\n" , + current, percpu, slab, current - (percpu + slab)); cleanup_children:for (i =0 ; i <1000 ; i++) {
_
Patches currently in -mm which might be from [email protected] are