vfio/type1: fix dirty bitmap calculation in vfio_dma_rw
The count of dirtied pages is not only determined by count of copied
pages, but also by the start offset.
e.g. if offset = PAGE_SIZE - 1, and *copied=2, the dirty pages count
is 2, instead of 1 or 0.
Fixes: d6a4c18566
("vfio iommu: Implementation of ioctl for dirty pages tracking")
Signed-off-by: Yan Zhao <yan.y.zhao@intel.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
28b1302440
commit
2c5af98592
|
@ -2933,7 +2933,8 @@ static int vfio_iommu_type1_dma_rw_chunk(struct vfio_iommu *iommu,
|
|||
* size
|
||||
*/
|
||||
bitmap_set(dma->bitmap, offset >> pgshift,
|
||||
*copied >> pgshift);
|
||||
((offset + *copied - 1) >> pgshift) -
|
||||
(offset >> pgshift) + 1);
|
||||
}
|
||||
} else
|
||||
*copied = copy_from_user(data, (void __user *)vaddr,
|
||||
|
|
Loading…
Reference in New Issue