FAILED: patch "[PATCH] drm/i915/gvt: Fix mmap range check" failed to apply to 4.14-stable tree
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 51b00d8509dc69c98740da2ad07308b630d3eb7d Mon Sep 17 00:00:00 2001
From: Zhenyu Wang <[email protected]>
Date: Fri, 11 Jan 2019 13:58:53 +0800
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.
drivers/gpu/drm/i915/gvt/kvmgt.c +12 -2
@@ -996,7 +996,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);
@@ -1014,7 +1014,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); }