The patch titled fix OOM killing of swapoff has been added to the -mm tree. Its filename is fix-oom-killing-of-swapoff.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: fix OOM killing of swapoff From: Hugh Dickins <hugh@xxxxxxxxxxx> These days, if you swapoff when there isn't enough memory, OOM killer gives "BUG: scheduling while atomic" and the machine hangs: badness() needs to do its PF_SWAPOFF return after the task_unlock (tasklist_lock is also held here, so p isn't going to be freed: PF_SWAPOFF might get turned off at any moment, but that doesn't really matter). Signed-off-by: Hugh Dickins <hugh@xxxxxxxxxxx> Cc: <stable@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- mm/oom_kill.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff -puN mm/oom_kill.c~fix-oom-killing-of-swapoff mm/oom_kill.c --- a/mm/oom_kill.c~fix-oom-killing-of-swapoff +++ a/mm/oom_kill.c @@ -61,12 +61,6 @@ unsigned long badness(struct task_struct } /* - * swapoff can easily use up all memory, so kill those first. - */ - if (p->flags & PF_SWAPOFF) - return ULONG_MAX; - - /* * The memory size of the process is the basis for the badness. */ points = mm->total_vm; @@ -77,6 +71,12 @@ unsigned long badness(struct task_struct task_unlock(p); /* + * swapoff can easily use up all memory, so kill those first. + */ + if (p->flags & PF_SWAPOFF) + return ULONG_MAX; + + /* * Processes which fork a lot of child processes are likely * a good choice. We add half the vmsize of the children if they * have an own mm. This prevents forking servers to flood the _ Patches currently in -mm which might be from hugh@xxxxxxxxxxx are fix-bug_onpageslab-from-fallback_alloc.patch fix-oom-killing-of-swapoff.patch ext2-reservations.patch ext2-balloc-fix-_with_rsv-freeze.patch ext2-balloc-reset-windowsz-when-full.patch ext2-balloc-fix-off-by-one-against-rsv_end.patch ext2-balloc-fix-off-by-one-against-grp_goal.patch ext2-balloc-say-rb_entry-not-list_entry.patch ext2-balloc-use-io_error-label.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html