Messages in this thread Patch in this message | | | From | Naoya Horiguchi <> | Subject | [PATCH] pagemap: fix order of pmd_trans_unstable() and pmd_trans_huge_lock() | Date | Thu, 29 Mar 2012 04:41:41 -0400 |
| |
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
| |