diff options
Diffstat (limited to 'fs/proc/task_mmu.c')
-rw-r--r-- | fs/proc/task_mmu.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 280282b05bc7..6744bd706ecf 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c | |||
@@ -1311,13 +1311,15 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end, | |||
1311 | pmd_t pmd = *pmdp; | 1311 | pmd_t pmd = *pmdp; |
1312 | struct page *page = NULL; | 1312 | struct page *page = NULL; |
1313 | 1313 | ||
1314 | if ((vma->vm_flags & VM_SOFTDIRTY) || pmd_soft_dirty(pmd)) | 1314 | if (vma->vm_flags & VM_SOFTDIRTY) |
1315 | flags |= PM_SOFT_DIRTY; | 1315 | flags |= PM_SOFT_DIRTY; |
1316 | 1316 | ||
1317 | if (pmd_present(pmd)) { | 1317 | if (pmd_present(pmd)) { |
1318 | page = pmd_page(pmd); | 1318 | page = pmd_page(pmd); |
1319 | 1319 | ||
1320 | flags |= PM_PRESENT; | 1320 | flags |= PM_PRESENT; |
1321 | if (pmd_soft_dirty(pmd)) | ||
1322 | flags |= PM_SOFT_DIRTY; | ||
1321 | if (pm->show_pfn) | 1323 | if (pm->show_pfn) |
1322 | frame = pmd_pfn(pmd) + | 1324 | frame = pmd_pfn(pmd) + |
1323 | ((addr & ~PMD_MASK) >> PAGE_SHIFT); | 1325 | ((addr & ~PMD_MASK) >> PAGE_SHIFT); |
@@ -1329,6 +1331,8 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end, | |||
1329 | frame = swp_type(entry) | | 1331 | frame = swp_type(entry) | |
1330 | (swp_offset(entry) << MAX_SWAPFILES_SHIFT); | 1332 | (swp_offset(entry) << MAX_SWAPFILES_SHIFT); |
1331 | flags |= PM_SWAP; | 1333 | flags |= PM_SWAP; |
1334 | if (pmd_swp_soft_dirty(pmd)) | ||
1335 | flags |= PM_SOFT_DIRTY; | ||
1332 | VM_BUG_ON(!is_pmd_migration_entry(pmd)); | 1336 | VM_BUG_ON(!is_pmd_migration_entry(pmd)); |
1333 | page = migration_entry_to_page(entry); | 1337 | page = migration_entry_to_page(entry); |
1334 | } | 1338 | } |