lkml.org 
[lkml]   [2012]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] pagemap: fix order of pmd_trans_unstable() and pmd_trans_huge_lock()
    Date
    pmd_trans_unstable() in pagemap_pte_range() comes before pmd_trans_huge_lock()
    now, which means that pagewalk kicked by reading /proc/pid/pagemap does not
    run over thp. This patch fixes it.

    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    ---
    fs/proc/task_mmu.c | 6 +++---
    1 files changed, 3 insertions(+), 3 deletions(-)

    diff --git linux-3.3.0-6658a6991ce.orig/fs/proc/task_mmu.c linux-3.3.0-6658a6991ce/fs/proc/task_mmu.c
    index 06d2b70..0105ba1 100644
    --- linux-3.3.0-6658a6991ce.orig/fs/proc/task_mmu.c
    +++ linux-3.3.0-6658a6991ce/fs/proc/task_mmu.c
    @@ -781,9 +781,6 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
    int err = 0;
    pagemap_entry_t pme = make_pme(PM_NOT_PRESENT);

    - if (pmd_trans_unstable(pmd))
    - return 0;
    -
    /* find the first VMA at or above 'addr' */
    vma = find_vma(walk->mm, addr);
    if (pmd_trans_huge_lock(pmd, vma) == 1) {
    @@ -801,6 +798,9 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
    return err;
    }

    + if (pmd_trans_unstable(pmd))
    + return 0;
    +
    for (; addr != end; addr += PAGE_SIZE) {

    /* check to see if we've left 'vma' behind
    --
    1.7.7.6


    \
     
     \ /
      Last update: 2012-03-29 11:29    [W:0.018 / U:31.964 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site