mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
percpu: scoped objcg protection
Similar to slab and kmem, switch to a scope-based protection of the objcg pointer to avoid. Link: https://lkml.kernel.org/r/20231019225346.1822282-6-roman.gushchin@linux.dev 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> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Cc: David Rientjes <rientjes@google.com> Cc: Dennis Zhou <dennis@kernel.org> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Muchun Song <muchun.song@linux.dev> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
e86828e544
commit
c63b835d0e
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user