Re: mmotm 2009-01-12-16-53 uploaded

From: Mike Waychison
Date: Tue Jan 13 2009 - 12:06:22 EST


KAMEZAWA Hiroyuki wrote:
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);


This patch is just reverting the behaviour back to having a 64bit pgoff. Best just reverting the patch for the time being.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/