diff options
author | Ingo Molnar <mingo@kernel.org> | 2017-11-10 08:21:08 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-11-10 08:21:08 +0100 |
commit | b5cd3b51e247473e290be5cd09e77171e466cd89 (patch) | |
tree | ac8c87e1b38f61a4c879c574dc9373db41f3df01 /drivers/gpu/drm/i915/i915_gem.c | |
parent | 376f3bcebdc999cc737d9052109cc33b573b3a8b (diff) | |
parent | 1c9dbd4615fd751e5e0b99807a3c7c8612e28e20 (diff) | |
download | talos-op-linux-b5cd3b51e247473e290be5cd09e77171e466cd89.tar.gz talos-op-linux-b5cd3b51e247473e290be5cd09e77171e466cd89.zip |
Merge branch 'linus' into x86/platform, to refresh the branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index af289d35b77a..dc1faa49687d 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2214,8 +2214,10 @@ static void __i915_gem_object_reset_page_iter(struct drm_i915_gem_object *obj) struct radix_tree_iter iter; void __rcu **slot; + rcu_read_lock(); radix_tree_for_each_slot(slot, &obj->mm.get_page.radix, &iter, 0) radix_tree_delete(&obj->mm.get_page.radix, iter.index); + rcu_read_unlock(); } void __i915_gem_object_put_pages(struct drm_i915_gem_object *obj, @@ -2657,6 +2659,9 @@ i915_gem_object_pwrite_gtt(struct drm_i915_gem_object *obj, if (READ_ONCE(obj->mm.pages)) return -ENODEV; + if (obj->mm.madv != I915_MADV_WILLNEED) + return -EFAULT; + /* Before the pages are instantiated the object is treated as being * in the CPU domain. The pages will be clflushed as required before * use, and we can freely write into the pages directly. If userspace |