On Sat, Mar 15, 2025 at 10:49:26AM -0700, Shakeel Butt wrote: > obj_cgroup_release is called when all the references to the objcg have > been released i.e. no more memory objects are pointing to it. Most > probably objcg->memcg will be pointing to some ancestor memcg. In > obj_cgroup_release(), the kernel calls obj_cgroup_uncharge_pages() which > refills the local stock. > > There is no need to refill the local stock with some ancestor memcg and > flush the local stock. Let's decouple obj_cgroup_release() from the > local stock by uncharging instead of refilling. One additional benefit > of this change is that it removes the requirement to only call > obj_cgroup_put() outside of local_lock. > > Signed-off-by: Shakeel Butt <shakeel.butt@xxxxxxxxx> > Acked-by: Vlastimil Babka <vbabka@xxxxxxx> Reviewed-by: Roman Gushchin <roman.gushchin@xxxxxxxxx>