File tree 1 file changed +5
-1
lines changed
1 file changed +5
-1
lines changed Original file line number Diff line number Diff line change @@ -4062,11 +4062,13 @@ static DEFINE_IDR(mem_cgroup_idr);
4062
4062
4063
4063
static void mem_cgroup_id_get_many (struct mem_cgroup * memcg , unsigned int n )
4064
4064
{
4065
+ VM_BUG_ON (atomic_read (& memcg -> id .ref ) <= 0 );
4065
4066
atomic_add (n , & memcg -> id .ref );
4066
4067
}
4067
4068
4068
4069
static void mem_cgroup_id_put_many (struct mem_cgroup * memcg , unsigned int n )
4069
4070
{
4071
+ VM_BUG_ON (atomic_read (& memcg -> id .ref ) < n );
4070
4072
if (atomic_sub_and_test (n , & memcg -> id .ref )) {
4071
4073
idr_remove (& mem_cgroup_idr , memcg -> id .id );
4072
4074
memcg -> id .id = 0 ;
@@ -4255,8 +4257,10 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
4255
4257
4256
4258
static int mem_cgroup_css_online (struct cgroup_subsys_state * css )
4257
4259
{
4260
+ struct mem_cgroup * memcg = mem_cgroup_from_css (css );
4261
+
4258
4262
/* Online state pins memcg ID, memcg ID pins CSS */
4259
- mem_cgroup_id_get ( mem_cgroup_from_css ( css ) );
4263
+ atomic_set ( & memcg -> id . ref , 1 );
4260
4264
css_get (css );
4261
4265
return 0 ;
4262
4266
}
You can’t perform that action at this time.
0 commit comments