lkml.org 
[lkml]   [2004]   [Nov]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 2.6.10-rc1-mm3

    * Ingo Molnar <mingo@elte.hu> wrote:

    > > ------------[ cut here ]------------
    > > kernel BUG at mm/memory.c:156!
    >
    > > Process shmt04 (pid: 4854, threadinfo=dca51000 task=de374510)
    >
    > reproducible here too, just running LTP's shmt04 directly triggers it
    > immediately. Looks like there's interaction of 4-level pagetables with
    > ipc/shm.c or mm/shmem.c.

    due to the PML4 feature, the clear_page_tables() function changed to
    clear_page_range(), changing its (first,size) argument to (first,last).
    Normally it's called with (0,TASK_SIZE) which normally is PML4-aligned,
    but in the (relatively rare) do_munmap() use this is not the case. We
    correctly calculate the range that could be cleared, but it's not
    PML4_SIZE aligned.

    The solution is to clip both 'first' and 'last' to PML4_SIZE boundary.
    Since when we calculate 'first' we add at least +PML4_SIZE to the value,
    it is safe to clip 'first'. It is obviously safe to clip 'last'.

    The patch below implements this fix - it boots & works fine and shmt04
    doesnt crash anymore. Andi, do you agree with this fix?

    Ingo

    Signed-off-by: Ingo Molnar <mingo@elte.hu>

    --- linux/mm/mmap.c.orig
    +++ linux/mm/mmap.c
    @@ -1545,7 +1545,7 @@ no_mmaps:
    }
    if (pml4_index(last) > start_pml4_index ||
    pgd_index(last) > start_pgd_index) {
    - clear_page_range(tlb, first, last);
    + clear_page_range(tlb, first & PML4_MASK, last & PML4_MASK);
    flush_tlb_pgtables(mm, first & PML4_MASK, last & PML4_MASK);
    }
    }
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 14:07    [W:0.023 / U:63.572 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site