]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.19.31/drm-i915-relax-mmap-vma-check.patch
Linux 4.19.31
[thirdparty/kernel/stable-queue.git] / releases / 4.19.31 / drm-i915-relax-mmap-vma-check.patch
CommitLineData
9d1d37cb
SL
1From 3b99fdca0c85219f9576c3b378441d1531d3ec69 Mon Sep 17 00:00:00 2001
2From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
3Date: Tue, 5 Mar 2019 11:04:08 +0000
4Subject: drm/i915: Relax mmap VMA check
5
6[ Upstream commit ca22f32a6296cbfa29de56328c8505560a18cfa8 ]
7
8Legacy behaviour was to allow non-page-aligned mmap requests, as does the
9linux mmap(2) implementation by virtue of automatically rounding up for
10the caller.
11
12To avoid breaking legacy userspace relax the newly introduced fix.
13
14Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
15Fixes: 5c4604e757ba ("drm/i915: Prevent a race during I915_GEM_MMAP ioctl with WC set")
16Reported-by: Guenter Roeck <linux@roeck-us.net>
17Cc: Adam Zabrocki <adamza@microsoft.com>
18Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
19Cc: <stable@vger.kernel.org> # v4.0+
20Cc: Akash Goel <akash.goel@intel.com>
21Cc: Chris Wilson <chris@chris-wilson.co.uk>
22Cc: Jani Nikula <jani.nikula@linux.intel.com>
23Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
24Cc: intel-gfx@lists.freedesktop.org
25Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
26Link: https://patchwork.freedesktop.org/patch/msgid/20190305110409.28633-1-tvrtko.ursulin@linux.intel.com
27(cherry picked from commit a90e1948efb648f567444f87f3c19b2a0787affd)
28Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
29Signed-off-by: Sasha Levin <sashal@kernel.org>
30---
31 drivers/gpu/drm/i915/i915_gem.c | 3 ++-
32 1 file changed, 2 insertions(+), 1 deletion(-)
33
34diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
35index 280c851714e6..03cda197fb6b 100644
36--- a/drivers/gpu/drm/i915/i915_gem.c
37+++ b/drivers/gpu/drm/i915/i915_gem.c
38@@ -1828,7 +1828,8 @@ __vma_matches(struct vm_area_struct *vma, struct file *filp,
39 if (vma->vm_file != filp)
40 return false;
41
42- return vma->vm_start == addr && (vma->vm_end - vma->vm_start) == size;
43+ return vma->vm_start == addr &&
44+ (vma->vm_end - vma->vm_start) == PAGE_ALIGN(size);
45 }
46
47 /**
48--
492.19.1
50