From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A8CDA38F957 for ; Mon, 20 Apr 2026 09:32:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776677536; cv=none; b=k/XbGke/LK0OQsAJliEbxdbm1re00cf2x/gUuyygJRjTXTseB8SnarhNJ0knovR9aGlTvBR9O63oCzLclMnWhap9OW6o5vn7H34EDCbZlKW0Wq4n21WtOiSOxn7MLmTgC/ge18qrvAHij2wTBhx1g9/oW306NGMSxmnwWtHTDL8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776677536; c=relaxed/simple; bh=GKLUefT3Dn9fhQwQXyLrH3CNFAboR78XO0F6pxtcOaU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=nuFr7O9uKtE20kzIjsflR0g3MUKcdJvc5H0cNbvG4KOlG0XHtEtJObfrDUoq1/ZnniLkjqjpeSwAPcSeqHh1PnJZnWbaWyMp9jffVByy+Yi8geE+RbrFXOYz73AojRCiCwJ6Ng5RDRf7EjQxr4d4M902pIcOGGxORfbqyYRZszc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YE2jejbi; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YE2jejbi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C2607C19425; Mon, 20 Apr 2026 09:32:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776677536; bh=GKLUefT3Dn9fhQwQXyLrH3CNFAboR78XO0F6pxtcOaU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=YE2jejbizT9A13H/u5m52XZAVVOkeZ9U8cSzBPg1iJB5e4fcOIUdge9+IGWEqENPn um15vO6XATKOVvnZRAT+NUtQsz7C9uV/4gxeR8wd80seez8zGwkGdXmTj/Z+R1fRE2 SCfRqfYrcMeHkr2a/bPNrI5OKa/gFQnh5FmPCE9WM2CpbDhvlO6Rt2hsImOhTY80r8 9hVO4Rmm7F8c3Avb+RRxG5ZV4KCPCp754cYyLr8oaej/cnhrWizj51jloT+UtOjl0s xMbfTYQbBMS9rFY7PueqxzA6S267WUqyqEeCashjne/9m2JO2x/IzqETza9Y0hD8To cTU5OkLMKVV9Q== Date: Mon, 20 Apr 2026 18:32:14 +0900 From: "Harry Yoo (Oracle)" To: Hongfu Li Cc: hao.ge@linux.dev, akpm@linux-foundation.org, pasha.tatashin@soleen.com, roman.gushchin@linux.dev, surenb@google.com, vbabka@kernel.org, willy@infradead.org, linux-kernel@vger.kernel.org, Hao Li Subject: Re: [PATCH] tools/cgroup/slabinfo: Fix use of slab.memcg_data Message-ID: References: <5e7c23e5-3099-4130-bf51-4a402279d04f@linux.dev> <20260420090025.3277598-1-lihongfu@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260420090025.3277598-1-lihongfu@kylinos.cn> On Mon, Apr 20, 2026 at 05:00:25PM +0800, Hongfu Li wrote: > Hi Hao, > > Thanks for your review. > > > > +def objexts_flags_mask(): > > > + try: > > > + return int(prog.constant('__NR_OBJEXTS_FLAGS')) - 1 > > > + except: > > > + return 0x7 > > > + > > > + > > > def find_memcg_ids(css=prog['root_mem_cgroup'].css, prefix=''): > > > 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 = slab.memcg_data.value_() > > > - if objcg_vec_raw == 0: > > > + objext_vec_raw = slab.obj_exts.value_() > > > > Here, we should also check whether it equals OBJEXTS_ALLOC_FAIL, > > > > which indicates that the allocation of obj_exts has failed, Or have I > > missed something here? > > An obj_ext with the OBJEXTS_ALLOC_FAIL flag may not belong to any cgroup. > Should we add a check and break this round of polling, or add a comment > explaining this scenario? I think it should just skip that slab and continue. But it's very subtle: obj_exts == OBJEXTS_ALLOC_FAIL (bit 0) means it failed to allocate the vector, but (obj_exts != OBJEXTS_ALLOC_FAIL) && (obj_exts & MEMCG_DATA_OBJEXTS (bit)) means it is a pointer to slabobj_ext vector. There is one more thing to consider: it may not be an array of slabobj_ext as you may expect. See how slab_obj_ext() works: https://lore.kernel.org/linux-mm/20260113061845.159790-1-harry.yoo@oracle.com > Best Regards, > Hongfu -- Cheers, Harry / Hyeonggon