diff options
author | David Rientjes <rientjes@google.com> | 2013-07-03 18:01:23 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 19:07:26 -0400 |
commit | ffbdccf5e1facd18b54429a749667fb185c10f20 (patch) | |
tree | b3c8cf7399bb6493568d02bce307dce45b4ea9d7 /include/linux/memcontrol.h | |
parent | 541c237c0923f567c9c4cabb8a81635baadc713f (diff) |
mm, memcg: don't take task_lock in task_in_mem_cgroup
For processes that have detached their mm's, task_in_mem_cgroup()
unnecessarily takes task_lock() when rcu_read_lock() is all that is
necessary to call mem_cgroup_from_task().
While we're here, switch task_in_mem_cgroup() to return bool.
Signed-off-by: David Rientjes <rientjes@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/memcontrol.h')
-rw-r--r-- | include/linux/memcontrol.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index d6183f06d8c1..7b4d9d79570b 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
@@ -77,7 +77,8 @@ extern void mem_cgroup_uncharge_cache_page(struct page *page); | |||
77 | 77 | ||
78 | bool __mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg, | 78 | bool __mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg, |
79 | struct mem_cgroup *memcg); | 79 | struct mem_cgroup *memcg); |
80 | int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *memcg); | 80 | bool task_in_mem_cgroup(struct task_struct *task, |
81 | const struct mem_cgroup *memcg); | ||
81 | 82 | ||
82 | extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page); | 83 | extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page); |
83 | extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); | 84 | extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); |
@@ -273,10 +274,10 @@ static inline bool mm_match_cgroup(struct mm_struct *mm, | |||
273 | return true; | 274 | return true; |
274 | } | 275 | } |
275 | 276 | ||
276 | static inline int task_in_mem_cgroup(struct task_struct *task, | 277 | static inline bool task_in_mem_cgroup(struct task_struct *task, |
277 | const struct mem_cgroup *memcg) | 278 | const struct mem_cgroup *memcg) |
278 | { | 279 | { |
279 | return 1; | 280 | return true; |
280 | } | 281 | } |
281 | 282 | ||
282 | static inline struct cgroup_subsys_state | 283 | static inline struct cgroup_subsys_state |