--- mm/memory.c | 7 +++++++ mm/rmap.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) Index: linux-2.6/mm/memory.c =================================================================== --- linux-2.6.orig/mm/memory.c 2007-09-10 19:54:26.000000000 -0700 +++ linux-2.6/mm/memory.c 2007-09-10 19:55:39.000000000 -0700 @@ -2377,6 +2377,10 @@ static int __do_fault(struct mm_struct * return VM_FAULT_OOM; } + if (PageHead(vmf.page)) { + printk("__do_fault: page=%p order=%d page_index=%d pgoff=%d address=%lu\n", + vmf.page, page_cache_page_order(vmf.page), vmf.page_index, pgoff, address); + } /* * For consistency in subsequent calls, make the faulted page always * locked. @@ -2475,6 +2479,9 @@ static int __do_fault(struct mm_struct * update_mmu_cache(vma, address, entry); lazy_mmu_prot_update(entry); } else { + if (PageHead(vmf.page)) { + printk("__do_fault: race\n"); + } if (anon) page_cache_release(page); else