[x86] drm/i915: Initialise userptr mmu_notifier serial to 1 (Closes: #765590)

svn path=/dists/sid/linux/; revision=21976
This commit is contained in:
Ben Hutchings 2014-10-26 02:43:20 +00:00
parent 44ff4a9061
commit 852f65ab85
3 changed files with 42 additions and 0 deletions

2
debian/changelog vendored
View File

@ -8,6 +8,8 @@ linux (3.16.5-2) UNRELEASED; urgency=medium
* [x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685)
* mmc_block: Increase max_devices and set MMC_BLOCK_MINORS to 256
(Closes: #765621)
* [x86] drm/i915: Initialise userptr mmu_notifier serial to 1
(Closes: #765590)
[ Mauricio Faria de Oliveira ]
* [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles

View File

@ -0,0 +1,39 @@
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri, 11 Jul 2014 11:28:01 +0100
Subject: drm/i915: Initialise userptr mmu_notifier serial to 1
Origin: https://git.kernel.org/linus/6c308fecb4d1f928d52f9586d976f79b37149388
Bug-Debian: https://bugs.debian.org/765590
During the range invalidate, we walk the list of buffers associated with
the mmu_notifer and find the ones that overlap the range. An
optimisation is made to speed up the iteration by assuming the previous
iter is still valid whilst the tree is unmodified. This exposes a bug
when a range invalidate is triggered after we have just created the
mmu_notifier, but before attaching any buffers. In that case, we presume
we have an unmodified list and start walking from the last iter which is
NULL. Oops.
The easiest fix is then to initialise the serial of the tree to 1.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Testecase: igt/gem_userptr_blts/stress-mm
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/i915_gem_userptr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
index 21ea928..b41614d 100644
--- a/drivers/gpu/drm/i915/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
@@ -150,7 +150,7 @@ i915_mmu_notifier_get(struct drm_device *dev, struct mm_struct *mm)
mmu->mm = mm;
mmu->objects = RB_ROOT;
mmu->count = 0;
- mmu->serial = 0;
+ mmu->serial = 1;
/* Protected by mmap_sem (write-lock) */
ret = __mmu_notifier_register(&mmu->mn, mm);

View File

@ -389,3 +389,4 @@ bugfix/all/fold-swapping-d_name.hash-into-switch_names.patch
bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch
bugfix/all/qla2xxx-fix-kernel-NULL-pointer-access.patch
features/all/mmc_block-increase-max_devices.patch
bugfix/x86/drm-i915-initialise-userptr-mmu_notifier-serial-to-1.patch