Merge tag 'v3.10.56' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / mm / oom_kill.c
index 8e40908e724ac390b65c6d903a3643730b313255..50cbdb5de6eb373adb66aa0b4d07e6562e6e2c09 100644 (file)
@@ -449,6 +449,17 @@ void oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
                list_for_each_entry(child, &t->children, sibling) {
                        unsigned int child_points;
 
+            /*LCH add for race condition*/
+            if (p->flags & PF_EXITING) {
+                read_unlock(&tasklist_lock);
+                task_lock(p);
+                pr_err("%s: process %d (%s) is exiting\n", message, task_pid_nr(p), p->comm);
+                task_unlock(p);
+                set_tsk_thread_flag(p, TIF_MEMDIE);
+                put_task_struct(p);
+                       return;
+            }
+
                        if (child->mm == p->mm)
                                continue;
                        /*
@@ -624,6 +635,11 @@ void out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask,
        enum oom_constraint constraint = CONSTRAINT_NONE;
        int killed = 0;
 
+#ifdef CONFIG_MT_ENG_BUILD
+       //void add_kmem_status_oom_counter(void);
+       //add_kmem_status_oom_counter();
+#endif
+
        blocking_notifier_call_chain(&oom_notify_list, 0, &freed);
        if (freed > 0)
                /* Got some memory back in the last second. */