On Mon, 12 Jan 2009 16:53:43 -0800
akpm@xxxxxxxxxxxxxxxxxxxx wrote:
The mm-of-the-moment snapshot 2009-01-12-16-53 has been uploaded to
http://userweb.kernel.org/~akpm/mmotm/
and will soon be available at
git://git.zen-sources.org/zen/mmotm.git
After rtc compile fix, the kernel boots.
But with CONFIG_DEBUG_VM, I saw BUG_ON() at
fork() -> ...
-> copy_page_range() ...
-> copy_one_pte()
->page_dup_rmap()
-> __page_check_anon_rmap().
BUG_ON(page->index != linear_page_index(vma, address)); fires. (from above, the page is ANON.)
It seems page->index == 0x7FFFFFFE here and the page seems to be
the highest address of stack.
This is caused by
fs-execc-fix-value-of-vma-vm_pgoff-for-the-stack-vma-of-32-bit-processes.patch
This is a fix.
==
From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>
pgoff is *not* vma->vm_start >> PAGE_SHIFT.
And no adjustment is necessary (when it maps the same start
before/after adjust vma.)
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx>
---
Index: mmotm-2.6.29-Jan12/fs/exec.c
===================================================================
--- mmotm-2.6.29-Jan12.orig/fs/exec.c
+++ mmotm-2.6.29-Jan12/fs/exec.c
@@ -509,7 +509,7 @@ static int shift_arg_pages(struct vm_are
unsigned long length = old_end - old_start;
unsigned long new_start = old_start - shift;
unsigned long new_end = old_end - shift;
- unsigned long new_pgoff = new_start >> PAGE_SHIFT;
+ unsigned long new_pgoff = vma->vm_pgoff;
struct mmu_gather *tlb;
BUG_ON(new_start > new_end);