Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 165661
b: refs/heads/master
c: c378369
h: refs/heads/master
i:
  165659: 311e453
v: v3
  • Loading branch information
Ben Blum authored and Linus Torvalds committed Sep 24, 2009
1 parent acc969c commit 2199ce7
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d1d9fd3308fdef6b4bf564fa3d6cfe35b68b50bc
refs/heads/master: c378369d8b4fa516ff2b1e79c3eded4e0e955ebb
3 changes: 3 additions & 0 deletions trunk/include/linux/cgroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,9 @@ struct css_set {
* during subsystem registration (at boot time).
*/
struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT];

/* For RCU-protected deletion */
struct rcu_head rcu_head;
};

/*
Expand Down
8 changes: 7 additions & 1 deletion trunk/kernel/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,12 @@ static struct hlist_head *css_set_hash(struct cgroup_subsys_state *css[])
return &css_set_table[index];
}

static void free_css_set_rcu(struct rcu_head *obj)
{
struct css_set *cg = container_of(obj, struct css_set, rcu_head);
kfree(cg);
}

/* We don't maintain the lists running through each css_set to its
* task until after the first call to cgroup_iter_start(). This
* reduces the fork()/exit() overhead for people who have cgroups
Expand Down Expand Up @@ -310,7 +316,7 @@ static void __put_css_set(struct css_set *cg, int taskexit)
}

write_unlock(&css_set_lock);
kfree(cg);
call_rcu(&cg->rcu_head, free_css_set_rcu);
}

/*
Expand Down

0 comments on commit 2199ce7

Please sign in to comment.