* [PATCH bpf-next v5 1/2] selftests/bpf: Remove kmem subtest from cgroup_iter_memcg
2026-03-03 5:53 [PATCH bpf-next v5 0/2] Fix test_cgroup_iter_memcg issues found during back-porting Hui Zhu
@ 2026-03-03 5:53 ` Hui Zhu
2026-03-03 5:53 ` [PATCH bpf-next v5 2/2] bpf: Use bpf_core_enum_value for stats in cgroup_iter_memcg Hui Zhu
2026-03-10 19:00 ` [PATCH bpf-next v5 0/2] Fix test_cgroup_iter_memcg issues found during back-porting patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Hui Zhu @ 2026-03-03 5:53 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Martin KaFai Lau, Eduard Zingerman, Song Liu, Yonghong Song,
John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa,
Shuah Khan, JP Kobryn, Roman Gushchin, Emil Tsalapatis, bpf,
linux-kselftest, linux-kernel
Cc: Hui Zhu, JP Kobryn
From: Hui Zhu <zhuhui@kylinos.cn>
When cgroup.memory=nokmem is set in the kernel command line, kmem
accounting is disabled. This causes the test_kmem subtest in
cgroup_iter_memcg to fail because it expects non-zero kmem values.
Remove the kmem subtest altogether since the remaining subtests
(shmem, file, pgfault) already provide sufficient coverage for
the cgroup iter memcg functionality.
Reviewed-by: JP Kobryn <jp.kobryn@linux.dev>
Signed-off-by: Hui Zhu <zhuhui@kylinos.cn>
---
.../testing/selftests/bpf/cgroup_iter_memcg.h | 2 --
.../bpf/prog_tests/cgroup_iter_memcg.c | 28 -------------------
.../selftests/bpf/progs/cgroup_iter_memcg.c | 1 -
3 files changed, 31 deletions(-)
diff --git a/tools/testing/selftests/bpf/cgroup_iter_memcg.h b/tools/testing/selftests/bpf/cgroup_iter_memcg.h
index 3f59b127943b..ff20ec537164 100644
--- a/tools/testing/selftests/bpf/cgroup_iter_memcg.h
+++ b/tools/testing/selftests/bpf/cgroup_iter_memcg.h
@@ -9,8 +9,6 @@ struct memcg_query {
unsigned long nr_shmem;
unsigned long nr_file_pages;
unsigned long nr_file_mapped;
- /* some memcg_stat_item */
- unsigned long memcg_kmem;
/* some vm_event_item */
unsigned long pgfault;
};
diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c b/tools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c
index a5afd16705f0..88fc3e83d2b7 100644
--- a/tools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c
+++ b/tools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c
@@ -126,32 +126,6 @@ static void test_shmem(struct bpf_link *link, struct memcg_query *memcg_query)
shm_unlink("/tmp_shmem");
}
-#define NR_PIPES 64
-static void test_kmem(struct bpf_link *link, struct memcg_query *memcg_query)
-{
- int fds[NR_PIPES][2], i;
-
- /*
- * Increase kmem value by creating pipes which will allocate some
- * kernel buffers.
- */
- for (i = 0; i < NR_PIPES; i++) {
- if (!ASSERT_OK(pipe(fds[i]), "pipe"))
- goto cleanup;
- }
-
- if (!ASSERT_OK(read_stats(link), "read stats"))
- goto cleanup;
-
- ASSERT_GT(memcg_query->memcg_kmem, 0, "kmem value");
-
-cleanup:
- for (i = i - 1; i >= 0; i--) {
- close(fds[i][0]);
- close(fds[i][1]);
- }
-}
-
static void test_pgfault(struct bpf_link *link, struct memcg_query *memcg_query)
{
void *map;
@@ -209,8 +183,6 @@ void test_cgroup_iter_memcg(void)
test_shmem(link, &skel->data_query->memcg_query);
if (test__start_subtest("cgroup_iter_memcg__file"))
test_file(link, &skel->data_query->memcg_query);
- if (test__start_subtest("cgroup_iter_memcg__kmem"))
- test_kmem(link, &skel->data_query->memcg_query);
if (test__start_subtest("cgroup_iter_memcg__pgfault"))
test_pgfault(link, &skel->data_query->memcg_query);
diff --git a/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c b/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
index 59fb70a3cc50..12f79a44133e 100644
--- a/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
+++ b/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
@@ -30,7 +30,6 @@ int cgroup_memcg_query(struct bpf_iter__cgroup *ctx)
memcg_query.nr_shmem = bpf_mem_cgroup_page_state(memcg, NR_SHMEM);
memcg_query.nr_file_pages = bpf_mem_cgroup_page_state(memcg, NR_FILE_PAGES);
memcg_query.nr_file_mapped = bpf_mem_cgroup_page_state(memcg, NR_FILE_MAPPED);
- memcg_query.memcg_kmem = bpf_mem_cgroup_page_state(memcg, MEMCG_KMEM);
memcg_query.pgfault = bpf_mem_cgroup_vm_events(memcg, PGFAULT);
bpf_put_mem_cgroup(memcg);
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH bpf-next v5 2/2] bpf: Use bpf_core_enum_value for stats in cgroup_iter_memcg
2026-03-03 5:53 [PATCH bpf-next v5 0/2] Fix test_cgroup_iter_memcg issues found during back-porting Hui Zhu
2026-03-03 5:53 ` [PATCH bpf-next v5 1/2] selftests/bpf: Remove kmem subtest from cgroup_iter_memcg Hui Zhu
@ 2026-03-03 5:53 ` Hui Zhu
2026-03-10 19:00 ` [PATCH bpf-next v5 0/2] Fix test_cgroup_iter_memcg issues found during back-porting patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Hui Zhu @ 2026-03-03 5:53 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Martin KaFai Lau, Eduard Zingerman, Song Liu, Yonghong Song,
John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa,
Shuah Khan, JP Kobryn, Roman Gushchin, Emil Tsalapatis, bpf,
linux-kselftest, linux-kernel
Cc: Hui Zhu, JP Kobryn
From: Hui Zhu <zhuhui@kylinos.cn>
Replace hardcoded enum values with bpf_core_enum_value() calls in
cgroup_iter_memcg test to improve portability across different
kernel versions.
The change adds runtime enum value resolution for:
- node_stat_item: NR_ANON_MAPPED, NR_SHMEM, NR_FILE_PAGES,
NR_FILE_MAPPED
- vm_event_item: PGFAULT
This ensures the BPF program can adapt to enum value changes
between kernel versions.
Reviewed-by: Emil Tsalapatis <emil@etsalapatis.com>
Reviewed-by: JP Kobryn <jp.kobryn@linux.dev>
Signed-off-by: Hui Zhu <zhuhui@kylinos.cn>
---
.../selftests/bpf/progs/cgroup_iter_memcg.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c b/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
index 12f79a44133e..06a385c9d85b 100644
--- a/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
+++ b/tools/testing/selftests/bpf/progs/cgroup_iter_memcg.c
@@ -26,11 +26,18 @@ int cgroup_memcg_query(struct bpf_iter__cgroup *ctx)
bpf_mem_cgroup_flush_stats(memcg);
- memcg_query.nr_anon_mapped = bpf_mem_cgroup_page_state(memcg, NR_ANON_MAPPED);
- memcg_query.nr_shmem = bpf_mem_cgroup_page_state(memcg, NR_SHMEM);
- memcg_query.nr_file_pages = bpf_mem_cgroup_page_state(memcg, NR_FILE_PAGES);
- memcg_query.nr_file_mapped = bpf_mem_cgroup_page_state(memcg, NR_FILE_MAPPED);
- memcg_query.pgfault = bpf_mem_cgroup_vm_events(memcg, PGFAULT);
+ memcg_query.nr_anon_mapped = bpf_mem_cgroup_page_state(
+ memcg,
+ bpf_core_enum_value(enum node_stat_item, NR_ANON_MAPPED));
+ memcg_query.nr_shmem = bpf_mem_cgroup_page_state(
+ memcg, bpf_core_enum_value(enum node_stat_item, NR_SHMEM));
+ memcg_query.nr_file_pages = bpf_mem_cgroup_page_state(
+ memcg, bpf_core_enum_value(enum node_stat_item, NR_FILE_PAGES));
+ memcg_query.nr_file_mapped = bpf_mem_cgroup_page_state(
+ memcg,
+ bpf_core_enum_value(enum node_stat_item, NR_FILE_MAPPED));
+ memcg_query.pgfault = bpf_mem_cgroup_vm_events(
+ memcg, bpf_core_enum_value(enum vm_event_item, PGFAULT));
bpf_put_mem_cgroup(memcg);
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH bpf-next v5 0/2] Fix test_cgroup_iter_memcg issues found during back-porting
2026-03-03 5:53 [PATCH bpf-next v5 0/2] Fix test_cgroup_iter_memcg issues found during back-porting Hui Zhu
2026-03-03 5:53 ` [PATCH bpf-next v5 1/2] selftests/bpf: Remove kmem subtest from cgroup_iter_memcg Hui Zhu
2026-03-03 5:53 ` [PATCH bpf-next v5 2/2] bpf: Use bpf_core_enum_value for stats in cgroup_iter_memcg Hui Zhu
@ 2026-03-10 19:00 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-03-10 19:00 UTC (permalink / raw)
To: Hui Zhu
Cc: ast, daniel, andrii, martin.lau, eddyz87, song, yonghong.song,
john.fastabend, kpsingh, sdf, haoluo, jolsa, shuah, inwardvessel,
roman.gushchin, emil, bpf, linux-kselftest, linux-kernel, zhuhui
Hello:
This series was applied to bpf/bpf-next.git (master)
by Alexei Starovoitov <ast@kernel.org>:
On Tue, 3 Mar 2026 13:53:07 +0800 you wrote:
> From: Hui Zhu <zhuhui@kylinos.cn>
>
> While back-porting "mm: bpf kfuncs to access memcg data", I
> encountered issues with test_cgroup_iter_memcg, specifically
> in test_kmem.
> The test_cgroup_iter_memcg test would falsely pass when
> bpf_mem_cgroup_page_state() failed due to incompatible enum
> values across kernel versions. Additionally, test_kmem would
> fail on systems with cgroup.memory=nokmem enabled.
>
> [...]
Here is the summary with links:
- [bpf-next,v5,1/2] selftests/bpf: Remove kmem subtest from cgroup_iter_memcg
https://git.kernel.org/bpf/bpf-next/c/a8fce027e17b
- [bpf-next,v5,2/2] bpf: Use bpf_core_enum_value for stats in cgroup_iter_memcg
https://git.kernel.org/bpf/bpf-next/c/da99028c2113
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 4+ messages in thread