memcg: use find_lock_task_mm() in memory cgroups oom
[linux-2.6-block.git] / mm / memcontrol.c
index ea5f5edf00b79a16f9977e5a5f4172a31be74bff..f52b0a1861c4624b7e99879e4aa538872604c0ac 100644 (file)
@@ -47,6 +47,7 @@
 #include <linux/mm_inline.h>
 #include <linux/page_cgroup.h>
 #include <linux/cpu.h>
+#include <linux/oom.h>
 #include "internal.h"
 
 #include <asm/uaccess.h>
@@ -838,10 +839,13 @@ int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *mem)
 {
        int ret;
        struct mem_cgroup *curr = NULL;
+       struct task_struct *p;
 
-       task_lock(task);
-       curr = try_get_mem_cgroup_from_mm(task->mm);
-       task_unlock(task);
+       p = find_lock_task_mm(task);
+       if (!p)
+               return 0;
+       curr = try_get_mem_cgroup_from_mm(p->mm);
+       task_unlock(p);
        if (!curr)
                return 0;
        /*