From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63F62C00140 for ; Fri, 12 Aug 2022 16:58:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C41E78E0002; Fri, 12 Aug 2022 12:58:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BF1A78E0001; Fri, 12 Aug 2022 12:58:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AE1308E0002; Fri, 12 Aug 2022 12:58:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A152A8E0001 for ; Fri, 12 Aug 2022 12:58:00 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 662731201A9 for ; Fri, 12 Aug 2022 16:58:00 +0000 (UTC) X-FDA: 79791547920.13.0ECF2EB Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) by imf20.hostedemail.com (Postfix) with ESMTP id D0D351C0192 for ; Fri, 12 Aug 2022 16:57:59 +0000 (UTC) Received: by mail-yb1-f201.google.com with SMTP id 137-20020a250b8f000000b0067a5a14d730so1132676ybl.12 for ; Fri, 12 Aug 2022 09:57:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc; bh=R06lrdYIFgbYGZQBaMs5Tz+QLWy1uP4VRkuAR/ckZ+8=; b=n0KhhCoQu6+2K3yOqGNXdch+D7V/Ekevc0fxste8wMmkb/8TnpmAihLvGSc0h1JtTd EwOFd05EA2wEgAJJDxWuWP5Z7BT1V8+1XAGlKTK4GwzcPc4DVz3UcYP/ifg9/fkZOf6J Xef4us85cJv9lI9o/D4w0JcMWY0vro6AXCpzcNhQCZha2oEUMZKyH7osWxxBFHaqZfFI cKvz3GaE+lku7a6/CLOHGohAA5rgahXSQs2PV6OG5eaMz7kE2gDKIXOYiN4FcshygkIf susCJqBwnuX+JZEl4tAvq0mimSVUrmysEY4GP8JEcPKix7AIF0OPcbgX86u/sTGQeLt9 i4OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc; bh=R06lrdYIFgbYGZQBaMs5Tz+QLWy1uP4VRkuAR/ckZ+8=; b=EZIn8XroTRPWfTx+9PP6faT5OkIBs33QE0+CbeIB2/UCDQEjznAR5gDxImYfw4hDeq xxJWOrfqKcAn+itPei0JunyPKDQ75V1kkckEJWkjZ02xQltD1durEF/sfkELUG8AjenJ 2cBHZKt7KZiP/E9eI22FuOdDRT1fiyCUvy/elpk1rRpVzAXhBXXxfxaNimJYt6uuXB6B k+u6zwAJk+Q0t2SD3udKEe8AFfxasYXiujJOuSk1OKEubqU2ZcMMh2rvEQ3dP5z9nPsf FEEQa0hoJKVjzXU1dhaZDrIIA8jbGk8o0utyb1wnxBrKGojzB6XKVGbMg2nLAWgpPEHk J40g== X-Gm-Message-State: ACgBeo3XsxfXORvgQOHr15VMicz7eh79IuzRRVuotnI8jr+JCx4C8hb3 U4TIRLlkKPPZPSuO8Y1EjMLldKp/FG7bxw== X-Google-Smtp-Source: AA6agR5eA3zKFSyDylTwjia5RJoC02zN57hFsDAYzxC+KdxlNVOXC54p8q8MygnauAQw7PY7YjFbWWcHGb2j0Q== X-Received: from shakeelb.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:28b]) (user=shakeelb job=sendgmr) by 2002:a81:5d07:0:b0:329:8fb8:779 with SMTP id r7-20020a815d07000000b003298fb80779mr4720036ywb.77.1660323479019; Fri, 12 Aug 2022 09:57:59 -0700 (PDT) Date: Fri, 12 Aug 2022 16:57:56 +0000 In-Reply-To: <20220810151840.16394-14-laoar.shao@gmail.com> Message-Id: <20220812165756.dxaqy3go567prr5s@google.com> Mime-Version: 1.0 References: <20220810151840.16394-1-laoar.shao@gmail.com> <20220810151840.16394-14-laoar.shao@gmail.com> Subject: Re: [PATCH bpf-next 13/15] mm, memcg: Add new helper get_obj_cgroup_from_cgroup From: Shakeel Butt To: Yafang Shao Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, songmuchun@bytedance.com, akpm@linux-foundation.org, netdev@vger.kernel.org, bpf@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="us-ascii" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1660323479; a=rsa-sha256; cv=none; b=GPGLgWiHwi8ovFjwqG8m7H18Bqp5261QmnCKxyRERBLX5c3ASDWz2lrnJ1MEonLgmuKPUP kKNKDZYUdRcCydI19TSFeCGjrbmATjpPQtlge6Vltn2eoEhHwjlputU/j9YRaCVPUD2POU 0joKxTRPfHhPOqX2knKXqBSVJE4T/ug= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=n0KhhCoQ; spf=pass (imf20.hostedemail.com: domain of 3l4b2YggKCJwOD6GAAH7CKKCHA.8KIHEJQT-IIGR68G.KNC@flex--shakeelb.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=3l4b2YggKCJwOD6GAAH7CKKCHA.8KIHEJQT-IIGR68G.KNC@flex--shakeelb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1660323479; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=R06lrdYIFgbYGZQBaMs5Tz+QLWy1uP4VRkuAR/ckZ+8=; b=Ml+5l87ChEDYCSnKiYZM8eRL30l99Avj5NmKEQkkjekSbfPLAjKVzccz9BlCh4eyzFz7eD 7qzldzU1CWzJYadWXU++ofRFGEPSDPH/HEE6nQ4mtj2nLiN27AqsLetDZgT8VykGiNCjYX GUtvom/17fCV2zrZonl8aUl7C3PDvAQ= X-Rspam-User: X-Stat-Signature: xnk7apc3w1hjh8yrudqdybr6h91whpuh X-Rspamd-Queue-Id: D0D351C0192 Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=n0KhhCoQ; spf=pass (imf20.hostedemail.com: domain of 3l4b2YggKCJwOD6GAAH7CKKCHA.8KIHEJQT-IIGR68G.KNC@flex--shakeelb.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=3l4b2YggKCJwOD6GAAH7CKKCHA.8KIHEJQT-IIGR68G.KNC@flex--shakeelb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspamd-Server: rspam01 X-HE-Tag: 1660323479-205631 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Aug 10, 2022 at 03:18:38PM +0000, Yafang Shao wrote: > Introduce new helper get_obj_cgroup_from_cgroup() to get obj_cgroup from > a specific cgroup. Can you please add couple of lines on why you need objcg? > > Signed-off-by: Yafang Shao > --- > include/linux/memcontrol.h | 1 + > mm/memcontrol.c | 41 +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 2f0a611..901a921 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -1713,6 +1713,7 @@ static inline void set_shrinker_bit(struct mem_cgroup *memcg, > int __memcg_kmem_charge_page(struct page *page, gfp_t gfp, int order); > void __memcg_kmem_uncharge_page(struct page *page, int order); > > +struct obj_cgroup *get_obj_cgroup_from_cgroup(struct cgroup *cgrp); > struct obj_cgroup *get_obj_cgroup_from_current(void); > struct obj_cgroup *get_obj_cgroup_from_page(struct page *page); > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 618c366..762cffa 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -2908,6 +2908,47 @@ static struct obj_cgroup *__get_obj_cgroup_from_memcg(struct mem_cgroup *memcg) > return objcg; > } > > +static struct obj_cgroup *get_obj_cgroup_from_memcg(struct mem_cgroup *memcg) > +{ > + struct obj_cgroup *objcg; > + > + if (memcg_kmem_bypass()) > + return NULL; > + > + rcu_read_lock(); > + objcg = __get_obj_cgroup_from_memcg(memcg); > + rcu_read_unlock(); > + return objcg; > +} > + > +struct obj_cgroup *get_obj_cgroup_from_cgroup(struct cgroup *cgrp) > +{ > + struct cgroup_subsys_state *css; > + struct mem_cgroup *memcg; > + struct obj_cgroup *objcg; > + > + rcu_read_lock(); > + css = rcu_dereference(cgrp->subsys[memory_cgrp_id]); > + if (!css || !css_tryget_online(css)) { > + rcu_read_unlock(); > + cgroup_put(cgrp); > + return ERR_PTR(-EINVAL); > + } > + rcu_read_unlock(); > + cgroup_put(cgrp); The above put seems out of place and buggy. > + > + memcg = mem_cgroup_from_css(css); > + if (!memcg) { > + css_put(css); > + return ERR_PTR(-EINVAL); > + } > + > + objcg = get_obj_cgroup_from_memcg(memcg); > + css_put(css); > + > + return objcg; > +} > + > __always_inline struct obj_cgroup *get_obj_cgroup_from_current(void) > { > struct obj_cgroup *objcg = NULL; > -- > 1.8.3.1 >