|
@@ -645,7 +645,6 @@ bool out_of_memory(struct oom_control *oc)
|
|
|
unsigned long freed = 0;
|
|
|
unsigned int uninitialized_var(points);
|
|
|
enum oom_constraint constraint = CONSTRAINT_NONE;
|
|
|
- int killed = 0;
|
|
|
|
|
|
if (oom_killer_disabled)
|
|
|
return false;
|
|
@@ -653,7 +652,7 @@ bool out_of_memory(struct oom_control *oc)
|
|
|
blocking_notifier_call_chain(&oom_notify_list, 0, &freed);
|
|
|
if (freed > 0)
|
|
|
/* Got some memory back in the last second. */
|
|
|
- goto out;
|
|
|
+ return true;
|
|
|
|
|
|
/*
|
|
|
* If current has a pending SIGKILL or is exiting, then automatically
|
|
@@ -666,7 +665,7 @@ bool out_of_memory(struct oom_control *oc)
|
|
|
if (current->mm &&
|
|
|
(fatal_signal_pending(current) || task_will_free_mem(current))) {
|
|
|
mark_oom_victim(current);
|
|
|
- goto out;
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -684,7 +683,7 @@ bool out_of_memory(struct oom_control *oc)
|
|
|
get_task_struct(current);
|
|
|
oom_kill_process(oc, current, 0, totalpages, NULL,
|
|
|
"Out of memory (oom_kill_allocating_task)");
|
|
|
- goto out;
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
p = select_bad_process(oc, &points, totalpages);
|
|
@@ -696,16 +695,12 @@ bool out_of_memory(struct oom_control *oc)
|
|
|
if (p && p != (void *)-1UL) {
|
|
|
oom_kill_process(oc, p, points, totalpages, NULL,
|
|
|
"Out of memory");
|
|
|
- killed = 1;
|
|
|
- }
|
|
|
-out:
|
|
|
- /*
|
|
|
- * Give the killed threads a good chance of exiting before trying to
|
|
|
- * allocate memory again.
|
|
|
- */
|
|
|
- if (killed)
|
|
|
+ /*
|
|
|
+ * Give the killed process a good chance to exit before trying
|
|
|
+ * to allocate memory again.
|
|
|
+ */
|
|
|
schedule_timeout_killable(1);
|
|
|
-
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
|