|
@@ -266,8 +266,6 @@ enum oom_scan_t oom_scan_process_thread(struct task_struct *task,
|
|
|
* Don't allow any other task to have access to the reserves.
|
|
|
*/
|
|
|
if (test_tsk_thread_flag(task, TIF_MEMDIE)) {
|
|
|
- if (unlikely(frozen(task)))
|
|
|
- __thaw_task(task);
|
|
|
if (!force_kill)
|
|
|
return OOM_SCAN_ABORT;
|
|
|
}
|
|
@@ -423,6 +421,14 @@ void note_oom_kill(void)
|
|
|
void mark_tsk_oom_victim(struct task_struct *tsk)
|
|
|
{
|
|
|
set_tsk_thread_flag(tsk, TIF_MEMDIE);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Make sure that the task is woken up from uninterruptible sleep
|
|
|
+ * if it is frozen because OOM killer wouldn't be able to free
|
|
|
+ * any memory and livelock. freezing_slow_path will tell the freezer
|
|
|
+ * that TIF_MEMDIE tasks should be ignored.
|
|
|
+ */
|
|
|
+ __thaw_task(tsk);
|
|
|
}
|
|
|
|
|
|
/**
|