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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50562C00140 for ; Fri, 12 Aug 2022 16:58:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239311AbiHLQ6C (ORCPT ); Fri, 12 Aug 2022 12:58:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236554AbiHLQ6A (ORCPT ); Fri, 12 Aug 2022 12:58:00 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7C80B0B0D for ; Fri, 12 Aug 2022 09:57:59 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 130-20020a250188000000b006777ce7728cso1142958ybb.4 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=ebp08PqBTe3lGI1vSxAWg/itHxP68Cz4BYJfXzvNzAHhkuZvbtP59BExlVtxjOCQta 2O0M1sAj28RGp58umhibj5Rs9wsJIzNReG8LUBLqs3uefuaNWKDUJKQCcMX1MGiVWE4y 9icPaZiPpYmtfTLCCrYN/jiyyhX594FRUhndH8iE0RNgg+RHFRAshUi4Ay3UlK3YTLX+ urARhD61IUWI7+Osbykz43fmBQ0khL5WjW0C6yPTL+wqLTTeFwY7y+t8QZ2i+dVOBTd/ UJZqzeOyNhwenGaLPTFRWGqEAJmLph4t3H98WoX/aj3HwmrPHucZYCEns9d3DoeUR2n/ IfQQ== X-Gm-Message-State: ACgBeo1n4o7AdHhP77U71vOUiaprL+zPnerg1nSmlu08rvyIpMM3ojNt ap0shhlMpU6xa9H683qkWt0rr8u45vlVtQ== 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" Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org 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 >