On Tue, Apr 27, 2010 at 10:30:52PM +0100, Mel Gorman wrote:
This is the real bug, the patch 1 should be rejected and the
expanation-trace has the ordering wrong. The ordering is subtle but
fundamental to prevent that race, split_huge_page also requires the
same anon-vma list_add_tail to avoid the same race between fork and
rmap_walk. It should work fine already with old and new anon-vma code
as they both add new vmas always to the tail of the list.
So the bug in very short, is that "move_page_tables runs out of sync
with vma_adjust in shift_arg_pages"?
I'll now evaluate the fix and see if I can find any other
way to handle this.
Great, I'm quite sure with patch 3 we'll move the needle and fix the
bug, it perfectly explains why we only get the oops inside execve in
the stack page.
Patch 2 I didn't check it yet but it's only relevant for the new
anon-vma code, I suggest to handle it separately from the rest.
--