The patch titled OOM can panic due to processes stuck in __alloc_pages() has been added to the -mm tree. Its filename is oom-can-panic-due-to-processes-stuck-in-__alloc_pages.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: OOM can panic due to processes stuck in __alloc_pages() From: Kirill Korotaev <dev@xxxxxxxxxx> OOM can panic due to the processes stuck in __alloc_pages() doing infinite rebalance loop while no memory can be reclaimed. OOM killer tries to kill some processes, but unfortunetaly, rebalance label was moved by someone below the TIF_MEMDIE check, so buddy allocator doesn't see that process is OOM-killed and it can simply fail the allocation :/ Observed in reality on RHEL4(2.6.9)+OpenVZ kernel when a user doing some memory allocation tricks triggered OOM panic. Signed-off-by: Denis Lunev <den@xxxxx> Signed-off-by: Kirill Korotaev <dev@xxxxxxxxxx> Cc: Nick Piggin <nickpiggin@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- mm/page_alloc.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN mm/page_alloc.c~oom-can-panic-due-to-processes-stuck-in-__alloc_pages mm/page_alloc.c --- a/mm/page_alloc.c~oom-can-panic-due-to-processes-stuck-in-__alloc_pages +++ a/mm/page_alloc.c @@ -1184,6 +1184,7 @@ restart: /* This allocation should allow future memory freeing. */ +rebalance: if (((p->flags & PF_MEMALLOC) || unlikely(test_thread_flag(TIF_MEMDIE))) && !in_interrupt()) { if (!(gfp_mask & __GFP_NOMEMALLOC)) { @@ -1205,7 +1206,6 @@ nofail_alloc: if (!wait) goto nopage; -rebalance: cond_resched(); /* We now go into synchronous reclaim */ _ Patches currently in -mm which might be from dev@xxxxxxxxxx are oom-can-panic-due-to-processes-stuck-in-__alloc_pages.patch retries-in-ext3_prepare_write-violate-ordering-requirements.patch add-process_session-helper-routine.patch add-an-identifier-to-nsproxy.patch rename-struct-pspace-to-struct-pid_namespace.patch add-pid_namespace-to-nsproxy.patch use-current-nsproxy-pid_ns.patch add-child-reaper-to-pid_namespace.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