From nobody Sat Apr 18 10:43:39 2026 Received: from out-178.mta1.migadu.com (out-178.mta1.migadu.com [95.215.58.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44D863815FC for ; Sat, 28 Feb 2026 09:26:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772270794; cv=none; b=AU1H0uf/0cUo1KmonyoT0z5nyjbLw5GA2vvp0SU+q8dYXp+K3wXjWkfosUj78Q3NTXqpqy+5SEerAqf5G8Ec9CD+WHU04UH+TnFu9leuc2QfEb2FlCmKB20LZileuE3FVqFummvmnhIbBfiEMnjfirSxErtYndnGvS55AxUar/4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772270794; c=relaxed/simple; bh=ydcvMtndpU/OxsEtSVhVCNWCIxu5kvEi13B73r/hsw8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mbMOXb5XmU4p3ogKewSN503ho1yBjWLLZViXphSOeRwriXrrriOGr2QMibWeCtt/b69AyzmLOBDRT6e7OWcHXRLdaryH99tNAaTNbQ8HtiTTMTl+49ylDbz44/YLBlUoJMS59ssX58NyBeNgne5ZLvqVDJvEmEHhDnd6M3D+4Gc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=dgVTvRzZ; arc=none smtp.client-ip=95.215.58.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="dgVTvRzZ" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1772270790; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=djwKlAEgY6ee2weS/mkLRpx1tbGzO35/OAf7bR840yA=; b=dgVTvRzZlGoO1CkSn8bZ16rNqihdw9/PMHnu0NPbELIvJrbfC8mpFKwstnaruxC8o7O/g3 q4MfrBnxxHUQYp3NcxcVbTlFGfGo5YeT1No767SREG045eajNO8udieW6527uWoStNEf0G JgP/7UPJxYXYFChHAH2owr7p0/+LrVo= From: Hui Zhu 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 , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Hui Zhu Subject: [PATCH bpf-next v4 1/3] selftests/bpf: Remove kmem subtest from cgroup_iter_memcg Date: Sat, 28 Feb 2026 17:25:53 +0800 Message-ID: In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: Hui Zhu When cgroup.memory=3Dnokmem 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. Signed-off-by: Hui Zhu Reviewed-by: JP Kobryn --- .../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/testin= g/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/t= ools/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 m= emcg_query *memcg_query) shm_unlink("/tmp_shmem"); } =20 -#define NR_PIPES 64 -static void test_kmem(struct bpf_link *link, struct memcg_query *memcg_que= ry) -{ - int fds[NR_PIPES][2], i; - - /* - * Increase kmem value by creating pipes which will allocate some - * kernel buffers. - */ - for (i =3D 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 =3D i - 1; i >=3D 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); =20 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 =3D bpf_mem_cgroup_page_state(memcg, NR_SHMEM); memcg_query.nr_file_pages =3D bpf_mem_cgroup_page_state(memcg, NR_FILE_PA= GES); memcg_query.nr_file_mapped =3D bpf_mem_cgroup_page_state(memcg, NR_FILE_M= APPED); - memcg_query.memcg_kmem =3D bpf_mem_cgroup_page_state(memcg, MEMCG_KMEM); memcg_query.pgfault =3D bpf_mem_cgroup_vm_events(memcg, PGFAULT); =20 bpf_put_mem_cgroup(memcg); --=20 2.43.0 From nobody Sat Apr 18 10:43:39 2026 Received: from out-186.mta1.migadu.com (out-186.mta1.migadu.com [95.215.58.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44068387596 for ; Sat, 28 Feb 2026 09:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.186 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772270798; cv=none; b=rr+Imuw0LtwK74xjeyUb+QYvkdNYtTFcpdRhK8NDio5rLtXO0EwUHUGnP3xP+Dg4LkML2Rt5ppUP/FnPph7RKLtCvzIH5AvdwiNeMVuZvkuutnjVkYit+6EeAGxHkIA6OrAA9Img6AfJiBNKMrxoXSjeM+fW6K1fFHeJ42jydaM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772270798; c=relaxed/simple; bh=tVZDQij/6zXgwkcp+82ybX8VsjDe2at6v6mgRMGN0BY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D4PuIDzQP5Q81KlnsUJDR7l13LUgfxZBTYcb+51qnZfTRVT6gjrD6s07seWjRXpdBsHtkXoXeh5U8i4ZGxoiyLOpoBdcT+SHYXCpWXAp2dMlMHjpAZa9c0svS/IA+muiYc409UzC7FCvYVT/mkXtCxbJ1bEXrBoGAS2kEBrpMjI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=OltYUCyO; arc=none smtp.client-ip=95.215.58.186 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="OltYUCyO" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1772270795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JoNpdyP4g61Uwkgai/ODumcE5sjDqITd0hCVij5GPS0=; b=OltYUCyOnb9Jl9e5ZtZQ0prqvGDdKbHSDI+fmGJPi12CIUnnPjRIyj+Zf7CE4kabUirRL5 jLpjYAVnvCDaXWMlUeetonAzPwhzQ/jKN1QB/TSrG5XzVLMj1JVS1HrTwK1Vibw7st4bKJ Rz44pDAZOwVvf8sBmgpIMElyZ67gTA0= From: Hui Zhu 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 , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Hui Zhu Subject: [PATCH bpf-next v4 2/3] bpf: Use bpf_core_enum_value for stats in cgroup_iter_memcg Date: Sat, 28 Feb 2026 17:25:54 +0800 Message-ID: <0831b50f85b4b00e698ef0b5fff6acd196dd1265.1772270591.git.zhuhui@kylinos.cn> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: Hui Zhu 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. Signed-off-by: Hui Zhu Reviewed-by: JP Kobryn --- .../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) =20 bpf_mem_cgroup_flush_stats(memcg); =20 - memcg_query.nr_anon_mapped =3D bpf_mem_cgroup_page_state(memcg, NR_ANON_M= APPED); - memcg_query.nr_shmem =3D bpf_mem_cgroup_page_state(memcg, NR_SHMEM); - memcg_query.nr_file_pages =3D bpf_mem_cgroup_page_state(memcg, NR_FILE_PA= GES); - memcg_query.nr_file_mapped =3D bpf_mem_cgroup_page_state(memcg, NR_FILE_M= APPED); - memcg_query.pgfault =3D bpf_mem_cgroup_vm_events(memcg, PGFAULT); + memcg_query.nr_anon_mapped =3D bpf_mem_cgroup_page_state( + memcg, + bpf_core_enum_value(enum node_stat_item, NR_ANON_MAPPED)); + memcg_query.nr_shmem =3D bpf_mem_cgroup_page_state( + memcg, bpf_core_enum_value(enum node_stat_item, NR_SHMEM)); + memcg_query.nr_file_pages =3D bpf_mem_cgroup_page_state( + memcg, bpf_core_enum_value(enum node_stat_item, NR_FILE_PAGES)); + memcg_query.nr_file_mapped =3D bpf_mem_cgroup_page_state( + memcg, + bpf_core_enum_value(enum node_stat_item, NR_FILE_MAPPED)); + memcg_query.pgfault =3D bpf_mem_cgroup_vm_events( + memcg, bpf_core_enum_value(enum vm_event_item, PGFAULT)); =20 bpf_put_mem_cgroup(memcg); =20 --=20 2.43.0 From nobody Sat Apr 18 10:43:39 2026 Received: from out-171.mta1.migadu.com (out-171.mta1.migadu.com [95.215.58.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FF993612FA for ; Sat, 28 Feb 2026 09:26:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772270802; cv=none; b=p9UM2xW/8Pk+2A34TZh33xfyEX/0g4GQV2uTu5ITbwXe5m38OmiYtb4JzU1CufkKMqcw1hpcKb5PyYNtcBYG5ELtc1PzkEDwroivW+OFOoV0H27nKxH+lkZ0w0OUabQzhbJvwcFM8sQIkUaHkDUhDX6kgq+mojow3NAPPekLZzI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772270802; c=relaxed/simple; bh=I29KYns+3V8NZNZTTMf6JPThoWhIOTarBn/LbxeDCiE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d9llN2I+Bg+y2uSCheXdseCsVQzZBJ9L57vzR/NM7PJXDnXxj0hw/YjsOigzNaH+rD0rC9SEX+HquQ+vyhtegHY2ELMq6coWpr006DTJkEv2MJVu7iULyJKHlOSIDQmxdclMKabG2LDa1tB4wlUrCG5/aenIHBFhurYCHor1/dA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=hjQNawfk; arc=none smtp.client-ip=95.215.58.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="hjQNawfk" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1772270799; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wxewyvr0s1VxeZ03ELEr26G8sNLhbE2InXvijDekoLs=; b=hjQNawfkGYwMKZgG3ZKwDs6jN4Be/0d0HHurwH74mcMEhAf9MWApzA19PEjQiz+JNZnxPl ABEgXUA0gXKE+RwIImZkBeE/CgksJjO9f0vJzDw/sjmYGufG1VetVNz+SCy/o+GIjxazj+ 6L5t+6k+Fa9kpkEWKw9xjXK5h7YnUWk= From: Hui Zhu 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 , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Hui Zhu Subject: [PATCH bpf-next v4 3/3] selftests/bpf: Check bpf_mem_cgroup_page_state return value Date: Sat, 28 Feb 2026 17:25:55 +0800 Message-ID: In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" From: Hui Zhu When back-porting test_progs to different kernel versions, I encountered an issue where the test_cgroup_iter_memcg test would falsely pass even when bpf_mem_cgroup_page_state() failed. This patch adds explicit checks to ensure bpf_mem_cgroup_page_state() doesn't return -1 before validating the actual statistics values. Signed-off-by: Hui Zhu --- .../selftests/bpf/prog_tests/cgroup_iter_memcg.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c b/t= ools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c index 88fc3e83d2b7..9eadfbd3fdb9 100644 --- a/tools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c +++ b/tools/testing/selftests/bpf/prog_tests/cgroup_iter_memcg.c @@ -53,6 +53,8 @@ static void test_anon(struct bpf_link *link, struct memcg= _query *memcg_query) if (!ASSERT_OK(read_stats(link), "read stats")) goto cleanup; =20 + ASSERT_NEQ(memcg_query->nr_anon_mapped, (unsigned long)-1, + "bpf_mem_cgroup_page_state NR_ANON_MAPPED"); ASSERT_GT(memcg_query->nr_anon_mapped, 0, "final anon mapped val"); =20 cleanup: @@ -88,6 +90,10 @@ static void test_file(struct bpf_link *link, struct memc= g_query *memcg_query) if (!ASSERT_OK(read_stats(link), "read stats")) goto cleanup_map; =20 + ASSERT_NEQ(memcg_query->nr_file_pages, (unsigned long)-1, + "bpf_mem_cgroup_page_state NR_FILE_PAGES"); + ASSERT_NEQ(memcg_query->nr_file_mapped, (unsigned long)-1, + "bpf_mem_cgroup_page_state NR_FILE_MAPPED"); ASSERT_GT(memcg_query->nr_file_pages, 0, "final file value"); ASSERT_GT(memcg_query->nr_file_mapped, 0, "final file mapped value"); =20 @@ -119,6 +125,8 @@ static void test_shmem(struct bpf_link *link, struct me= mcg_query *memcg_query) if (!ASSERT_OK(read_stats(link), "read stats")) goto cleanup; =20 + ASSERT_NEQ(memcg_query->nr_shmem, (unsigned long)-1, + "bpf_mem_cgroup_page_state NR_SHMEM"); ASSERT_GT(memcg_query->nr_shmem, 0, "final shmem value"); =20 cleanup: @@ -144,6 +152,8 @@ static void test_pgfault(struct bpf_link *link, struct = memcg_query *memcg_query) if (!ASSERT_OK(read_stats(link), "read stats")) goto cleanup; =20 + ASSERT_NEQ(memcg_query->pgfault, (unsigned long)-1, + "bpf_mem_cgroup_vm_events PGFAULT"); ASSERT_GT(memcg_query->pgfault, 0, "final pgfault val"); =20 cleanup: --=20 2.43.0