From nobody Tue Jun 16 06:29:30 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 5391B17C211 for ; Fri, 17 Apr 2026 02:07:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776391666; cv=none; b=jt5xVk+tW+RSm4Mj/Zuv3+IG4U5kTJj8s1NArzDhAXFQ0mff3nbOBEicrbnBQ7AOHKfrL1MOHUqc6JWFfSRcWQxMC8Bn1AR2jPzrTq22h4vjZy3DSKvEMlZDihDwAN7f9wLczZsZvSOysJdJ/bDYGsam6Be0kTRVLcgYNjMmDZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776391666; c=relaxed/simple; bh=bK/UEuBFQPU1Bs5AlhxYFFoWXIpiUnT6o8UaJ/YgQOg=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=GJ6kfou41UXQJkwA3QCPf0WsJpPwXJd2BPOmFaVTjTHYsNceVfdklfN4ffjXSavOJCPfbTQA549O/NuaadTKI9uD1u/wWkWwBRn1VwiFSVxHUmbYzf4wNmCRRi5eaBz9BeNlqa5UPxABrbElkycLEtc3qNnd5Uf6Y7tqjDuBJ8M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 31c252f83a0211f1aa26b74ffac11d73-20260417 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CC_NO_NAME, HR_CTE_8B HR_CTT_MISS, HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.12,REQID:28619b02-28d7-4732-b0c7-7e507abbe230,IP:10, URL:0,TC:0,Content:0,EDM:25,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:30 X-CID-INFO: VERSION:1.3.12,REQID:28619b02-28d7-4732-b0c7-7e507abbe230,IP:10,UR L:0,TC:0,Content:0,EDM:25,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:30 X-CID-META: VersionHash:e7bac3a,CLOUDID:a8a4c97f828def204374675e6c107156,BulkI D:260417100734CNYSHQWT,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|102|127| 850|898,TC:nil,Content:0|15|50,EDM:5,IP:-2,URL:0,File:nil,RT:nil,Bulk:nil, QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0 ,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_FSD,TF_CID_SPAM_SNR,TF_CID_SPAM_FAS X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 31c252f83a0211f1aa26b74ffac11d73-20260417 X-User: lihongfu@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1328734649; Fri, 17 Apr 2026 10:07:32 +0800 From: Hongfu Li To: roman.gushchin@linux.dev, vbabka@kernel.org, willy@infradead.org, harry@kernel.org, pasha.tatashin@soleen.com, surenb@google.com, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, Hongfu Li Subject: [PATCH] tools/cgroup/slabinfo: Fix use of slab.memcg_data Date: Fri, 17 Apr 2026 10:07:29 +0800 Message-Id: <20260417020729.952897-1-lihongfu@kylinos.cn> X-Mailer: git-send-email 2.25.1 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 Content-Type: text/plain; charset="utf-8" After the introduce slabobj_ext to support slab object extensions, the memcg_slabinfo tool broke. An attempt to run it produces a trace like this: Traceback (most recent call last): File "/usr/local/bin/drgn", line 8, in sys.exit(_main()) ^^^^^^^ File "/usr/local/lib64/python3.11/site-packages/drgn/cli.py", line 688, i= n _main runpy.run_path( File "", line 291, in run_path File "", line 98, in _run_module_code File "", line 88, in _run_code File "/root/memcg_slabinfo.py", line 225, in main() File "/root/memcg_slabinfo.py", line 195, in main objcg_vec_raw =3D slab.memcg_data.value_() AttributeError: 'struct slab' has no member 'memcg_data' Fixes: 21c690a349ba ("mm: introduce slabobj_ext to support slab object exte= nsions") Signed-off-by: Hongfu Li --- tools/cgroup/memcg_slabinfo.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tools/cgroup/memcg_slabinfo.py b/tools/cgroup/memcg_slabinfo.py index 6bf4bde77903..e67dcfae1263 100644 --- a/tools/cgroup/memcg_slabinfo.py +++ b/tools/cgroup/memcg_slabinfo.py @@ -33,6 +33,13 @@ def err(s): sys.exit(1) =20 =20 +def objexts_flags_mask(): + try: + return int(prog.constant('__NR_OBJEXTS_FLAGS')) - 1 + except: + return 0x7 + + def find_memcg_ids(css=3Dprog['root_mem_cgroup'].css, prefix=3D''): if not list_empty(css.children.address_of_()): for css in list_for_each_entry('struct cgroup_subsys_state', @@ -192,23 +199,24 @@ def main(): # look over all slab folios and look for objects belonging # to the given memory cgroup for slab in for_each_slab(prog): - objcg_vec_raw =3D slab.memcg_data.value_() - if objcg_vec_raw =3D=3D 0: + objext_vec_raw =3D slab.obj_exts.value_() + if objext_vec_raw =3D=3D 0: continue cache =3D slab.slab_cache if not cache: continue addr =3D cache.value_() caches[addr] =3D cache - # clear the lowest bit to get the true obj_cgroups - objcg_vec =3D Object(prog, 'struct obj_cgroup **', - value=3Dobjcg_vec_raw & ~1) =20 if addr not in stats: stats[addr] =3D 0 =20 + # clear OBJEXTS_FLAGS_MASK bits to get the true slabobj_ext + mask =3D objexts_flags_mask() + objext_vec =3D Object(prog, 'struct slabobj_ext *', + value=3Dobjext_vec_raw & ~mask) for i in range(oo_objects(cache)): - if objcg_vec[i].value_() in obj_cgroups: + if objext_vec[i].objcg.value_() in obj_cgroups: stats[addr] +=3D 1 =20 for addr in caches: --=20 2.25.1