Looks fine to me. Thanks. Reviewed-by: Hang Yuan <hang.yuan@xxxxxxxxx> > -----Original Message----- > From: intel-gvt-dev [mailto:intel-gvt-dev-bounces@xxxxxxxxxxxxxxxxxxxxx] On > Behalf Of Zhenyu Wang > Sent: Friday, January 11, 2019 1:59 PM > To: intel-gvt-dev@xxxxxxxxxxxxxxxxxxxxx > Cc: Monroy, Rodrigo Axel <rodrigo.axel.monroy@xxxxxxxxx>; Orrala > Contreras, Alfredo <alfredo.orrala.contreras@xxxxxxxxx>; > stable@xxxxxxxxxxxxxxx > Subject: [PATCH] drm/i915/gvt: Fix mmap range check > > This is to fix missed mmap range check on vGPU bar2 region and only allow > to map vGPU allocated GMADDR range, which means user space should > support sparse mmap to get proper offset for mmap vGPU aperture. And > this takes care of actual pgoff in mmap request as original code always does > from beginning of vGPU aperture. > > Fixes: 659643f7d814 ("drm/i915/gvt/kvmgt: add vfio/mdev support to > KVMGT") > Cc: "Monroy, Rodrigo Axel" <rodrigo.axel.monroy@xxxxxxxxx> > Cc: "Orrala Contreras, Alfredo" <alfredo.orrala.contreras@xxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx # v4.10+ > Signed-off-by: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/gvt/kvmgt.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c > b/drivers/gpu/drm/i915/gvt/kvmgt.c > index a19e684e621a..5488c2e2a3ff 100644 > --- a/drivers/gpu/drm/i915/gvt/kvmgt.c > +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c > @@ -1005,7 +1005,7 @@ static int intel_vgpu_mmap(struct mdev_device > *mdev, struct vm_area_struct *vma) { > unsigned int index; > u64 virtaddr; > - unsigned long req_size, pgoff = 0; > + unsigned long req_size, pgoff, req_start; > pgprot_t pg_prot; > struct intel_vgpu *vgpu = mdev_get_drvdata(mdev); > > @@ -1023,7 +1023,17 @@ static int intel_vgpu_mmap(struct mdev_device > *mdev, struct vm_area_struct *vma) > pg_prot = vma->vm_page_prot; > virtaddr = vma->vm_start; > req_size = vma->vm_end - vma->vm_start; > - pgoff = vgpu_aperture_pa_base(vgpu) >> PAGE_SHIFT; > + pgoff = vma->vm_pgoff & > + ((1U << (VFIO_PCI_OFFSET_SHIFT - PAGE_SHIFT)) - 1); > + req_start = pgoff << PAGE_SHIFT; > + > + if (!intel_vgpu_in_aperture(vgpu, req_start)) > + return -EINVAL; > + if (req_start + req_size > > + vgpu_aperture_offset(vgpu) + vgpu_aperture_sz(vgpu)) > + return -EINVAL; > + > + pgoff = (gvt_aperture_pa_base(vgpu->gvt) >> PAGE_SHIFT) + pgoff; > > return remap_pfn_range(vma, virtaddr, pgoff, req_size, pg_prot); } > -- > 2.19.1 > > _______________________________________________ > intel-gvt-dev mailing list > intel-gvt-dev@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev