From: Roman Gushchin <roman.gushchin@linux.dev>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Shakeel@vger.kernel.org, Butt@vger.kernel.org,
shakeelb@google.com, Muchun Song <muchun.song@linux.dev>,
Dennis Zhou <dennis@kernel.org>,
David Rientjes <rientjes@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
Naresh Kamboju <naresh.kamboju@linaro.org>,
Roman Gushchin <roman.gushchin@linux.dev>
Subject: [PATCH v3 5/5] percpu: scoped objcg protection
Date: Mon, 16 Oct 2023 15:19:00 -0700 [thread overview]
Message-ID: <20231016221900.4031141-6-roman.gushchin@linux.dev> (raw)
In-Reply-To: <20231016221900.4031141-1-roman.gushchin@linux.dev>
Similar to slab and kmem, switch to a scope-based protection of the
objcg pointer to avoid.
Signed-off-by: Roman Gushchin (Cruise) <roman.gushchin@linux.dev>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Acked-by: Shakeel Butt <shakeelb@google.com>
---
mm/percpu.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/mm/percpu.c b/mm/percpu.c
index a7665de8485f..f53ba692d67a 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -1628,14 +1628,12 @@ static bool pcpu_memcg_pre_alloc_hook(size_t size, gfp_t gfp,
if (!memcg_kmem_online() || !(gfp & __GFP_ACCOUNT))
return true;
- objcg = get_obj_cgroup_from_current();
+ objcg = current_obj_cgroup();
if (!objcg)
return true;
- if (obj_cgroup_charge(objcg, gfp, pcpu_obj_full_size(size))) {
- obj_cgroup_put(objcg);
+ if (obj_cgroup_charge(objcg, gfp, pcpu_obj_full_size(size)))
return false;
- }
*objcgp = objcg;
return true;
@@ -1649,6 +1647,7 @@ static void pcpu_memcg_post_alloc_hook(struct obj_cgroup *objcg,
return;
if (likely(chunk && chunk->obj_cgroups)) {
+ obj_cgroup_get(objcg);
chunk->obj_cgroups[off >> PCPU_MIN_ALLOC_SHIFT] = objcg;
rcu_read_lock();
@@ -1657,7 +1656,6 @@ static void pcpu_memcg_post_alloc_hook(struct obj_cgroup *objcg,
rcu_read_unlock();
} else {
obj_cgroup_uncharge(objcg, pcpu_obj_full_size(size));
- obj_cgroup_put(objcg);
}
}
--
2.42.0
next prev parent reply other threads:[~2023-10-16 22:19 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-16 22:18 [PATCH v3 0/5] mm: improve performance of accounted kernel memory allocations Roman Gushchin
2023-10-16 22:18 ` [PATCH v3 1/5] mm: kmem: optimize get_obj_cgroup_from_current() Roman Gushchin
2023-10-17 9:57 ` Vlastimil Babka
2023-10-16 22:18 ` [PATCH v3 2/5] mm: kmem: add direct objcg pointer to task_struct Roman Gushchin
2023-10-16 22:34 ` Shakeel Butt
2023-10-18 9:52 ` Vlastimil Babka
2023-10-18 14:11 ` Vlastimil Babka
2023-10-18 15:29 ` Shakeel Butt
2023-10-18 17:22 ` Roman Gushchin
2023-10-18 18:26 ` Shakeel Butt
2023-10-18 22:37 ` Roman Gushchin
2023-10-19 16:36 ` Shakeel Butt
2023-10-16 22:18 ` [PATCH v3 3/5] mm: kmem: make memcg keep a reference to the original objcg Roman Gushchin
2023-10-18 11:58 ` Vlastimil Babka
2023-10-18 14:06 ` Vlastimil Babka
2023-10-16 22:18 ` [PATCH v3 4/5] mm: kmem: scoped objcg protection Roman Gushchin
2023-10-18 14:04 ` Vlastimil Babka
2023-10-16 22:19 ` Roman Gushchin [this message]
2023-10-18 14:23 ` [PATCH v3 5/5] percpu: " Vlastimil Babka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231016221900.4031141-6-roman.gushchin@linux.dev \
--to=roman.gushchin@linux.dev \
--cc=Butt@vger.kernel.org \
--cc=Shakeel@vger.kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=dennis@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=naresh.kamboju@linaro.org \
--cc=rientjes@google.com \
--cc=shakeelb@google.com \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.