On 9/16/21 11:58 PM, Peter Xu wrote: > linear_page_index(vma, vma->vm_start) of a shmem vma is exactly vm_pgoff. Could you use "vma->vm_pgoff + vma_pages(vma)" instead of the other linear_page_index() then? But now I wonder, is smaps_pte_hole() broken? it calls shmem_partial_swap_usage with addresses, not pgoffs? > Cc: Vlastimil Babka <vbabka@xxxxxxx> > Cc: Hugh Dickins <hughd@xxxxxxxxxx> > Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> > --- > mm/shmem.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index 96ccf6e941aa..2aef5b8e17c9 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -856,8 +856,7 @@ unsigned long shmem_swap_usage(struct vm_area_struct *vma) > return swapped << PAGE_SHIFT; > > /* Here comes the more involved part */ > - return shmem_partial_swap_usage(mapping, > - linear_page_index(vma, vma->vm_start), > + return shmem_partial_swap_usage(mapping, vma->vm_pgoff, > linear_page_index(vma, vma->vm_end)); > } > >