Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58fa2a55 authored by Vladimir Davydov's avatar Vladimir Davydov Committed by Linus Torvalds
Browse files
parent 252e5c6e
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -4062,11 +4062,13 @@ static DEFINE_IDR(mem_cgroup_idr);

static void mem_cgroup_id_get_many(struct mem_cgroup *memcg, unsigned int n)
{
	VM_BUG_ON(atomic_read(&memcg->id.ref) <= 0);
	atomic_add(n, &memcg->id.ref);
}

static void mem_cgroup_id_put_many(struct mem_cgroup *memcg, unsigned int n)
{
	VM_BUG_ON(atomic_read(&memcg->id.ref) < n);
	if (atomic_sub_and_test(n, &memcg->id.ref)) {
		idr_remove(&mem_cgroup_idr, memcg->id.id);
		memcg->id.id = 0;
@@ -4255,8 +4257,10 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)

static int mem_cgroup_css_online(struct cgroup_subsys_state *css)
{
	struct mem_cgroup *memcg = mem_cgroup_from_css(css);

	/* Online state pins memcg ID, memcg ID pins CSS */
	mem_cgroup_id_get(mem_cgroup_from_css(css));
	atomic_set(&memcg->id.ref, 1);
	css_get(css);
	return 0;
}