Messages in this thread | | | Date | Sun, 30 Dec 2007 15:01:16 +0100 | From | Ingo Molnar <> | Subject | Re: 2.6.22-stable causes oomkiller to be invoked |
| |
* Christoph Lameter <clameter@sgi.com> wrote:
> Index: linux-2.6/arch/x86/mm/pgtable_32.c > =================================================================== > --- linux-2.6.orig/arch/x86/mm/pgtable_32.c 2007-12-26 12:55:10.000000000 -0800 > +++ linux-2.6/arch/x86/mm/pgtable_32.c 2007-12-26 12:55:54.000000000 -0800 > @@ -366,6 +366,15 @@ void pgd_free(pgd_t *pgd) > } > /* in the non-PAE case, free_pgtables() clears user pgd entries */ > quicklist_free(0, pgd_dtor, pgd); > + > + /* > + * We must call check_pgd_cache() here because the pgd is freed after > + * tlb flushing and the call to check_pgd_cache. In some cases the VM > + * may not call tlb_flush_mmu during process termination (??).
that's incorrect i think: during process termination exit_mmap() calls tlb_finish_mmu() unconditionally which calls tlb_flush_mmu().
> + * If this is repeated then we may never call check_pgd_cache. > + * The quicklist will grow and grow. So call check_pgd_cache here. > + */ > + check_pgt_cache(); > }
so we still dont seem to understand the failure mode well enough. This also looks like a quite dangerous change so late in the v2.6.24 cycle. Does it really fix the OOM? If yes, why exactly?
Ingo
| |