|
@@ -204,7 +204,6 @@ static void smaps_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
|
{
|
|
{
|
|
pte_t *pte, ptent;
|
|
pte_t *pte, ptent;
|
|
spinlock_t *ptl;
|
|
spinlock_t *ptl;
|
|
- unsigned long pfn;
|
|
|
|
struct page *page;
|
|
struct page *page;
|
|
|
|
|
|
pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
|
|
pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
|
|
@@ -214,12 +213,12 @@ static void smaps_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
|
continue;
|
|
continue;
|
|
|
|
|
|
mss->resident += PAGE_SIZE;
|
|
mss->resident += PAGE_SIZE;
|
|
- pfn = pte_pfn(ptent);
|
|
|
|
- if (!pfn_valid(pfn))
|
|
|
|
|
|
+
|
|
|
|
+ page = vm_normal_page(vma, addr, ptent);
|
|
|
|
+ if (!page)
|
|
continue;
|
|
continue;
|
|
|
|
|
|
- page = pfn_to_page(pfn);
|
|
|
|
- if (page_count(page) >= 2) {
|
|
|
|
|
|
+ if (page_mapcount(page) >= 2) {
|
|
if (pte_dirty(ptent))
|
|
if (pte_dirty(ptent))
|
|
mss->shared_dirty += PAGE_SIZE;
|
|
mss->shared_dirty += PAGE_SIZE;
|
|
else
|
|
else
|