struct vfio_pci_device *vdev = device_data;
        struct pci_dev *pdev = vdev->pdev;
        unsigned int index;
-       u64 phys_len, req_len, pgoff, req_start, phys;
+       u64 phys_len, req_len, pgoff, req_start;
        int ret;
 
        index = vma->vm_pgoff >> (VFIO_PCI_OFFSET_SHIFT - PAGE_SHIFT);
        vma->vm_private_data = vdev;
        vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
        vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+       vma->vm_pgoff = (pci_resource_start(pdev, index) >> PAGE_SHIFT) + pgoff;
 
-       phys = (pci_resource_start(pdev, index) >> PAGE_SHIFT) + pgoff;
-
-       return remap_pfn_range(vma, vma->vm_start, phys,
+       return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
                               req_len, vma->vm_page_prot);
 }