From: Greg Kroah-Hartman Date: Fri, 28 Oct 2016 15:10:32 +0000 (-0400) Subject: 4.4-stable patches X-Git-Tag: v4.4.29~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=292ef6f6f3ec44d8f9fa34adf9cea6efa39c8740;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch --- diff --git a/queue-4.4/drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch b/queue-4.4/drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch new file mode 100644 index 00000000000..0c0455e1100 --- /dev/null +++ b/queue-4.4/drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch @@ -0,0 +1,61 @@ +From ca5732c53bf66ad755284786897e0dd10330de87 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Mon, 3 Oct 2016 13:45:15 +0100 +Subject: drm/i915: Unalias obj->phys_handle and obj->userptr + +From: Chris Wilson + +commit ca5732c53bf66ad755284786897e0dd10330de87 upstream. + +We use obj->phys_handle to choose the pread/pwrite path, but as +obj->phys_handle is a union with obj->userptr, we then mistakenly use +the phys_handle path for userptr objects within pread/pwrite. + +Testcase: igt/gem_userptr_blits/forbidden-operations +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97519 +Signed-off-by: Chris Wilson +Reviewed-by: Joonas Lahtinen +Link: http://patchwork.freedesktop.org/patch/msgid/20161003124516.12388-2-chris@chris-wilson.co.uk +(cherry picked from commit 5f12b80a0b42da253691ca03828033014bb786eb) +Signed-off-by: Jani Nikula +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/i915_drv.h | 24 +++++++++++------------- + 1 file changed, 11 insertions(+), 13 deletions(-) + +--- a/drivers/gpu/drm/i915/i915_drv.h ++++ b/drivers/gpu/drm/i915/i915_drv.h +@@ -2150,21 +2150,19 @@ struct drm_i915_gem_object { + /** Record of address bit 17 of each page at last unbind. */ + unsigned long *bit_17; + +- union { +- /** for phy allocated objects */ +- struct drm_dma_handle *phys_handle; +- +- struct i915_gem_userptr { +- uintptr_t ptr; +- unsigned read_only :1; +- unsigned workers :4; ++ struct i915_gem_userptr { ++ uintptr_t ptr; ++ unsigned read_only :1; ++ unsigned workers :4; + #define I915_GEM_USERPTR_MAX_WORKERS 15 + +- struct i915_mm_struct *mm; +- struct i915_mmu_object *mmu_object; +- struct work_struct *work; +- } userptr; +- }; ++ struct i915_mm_struct *mm; ++ struct i915_mmu_object *mmu_object; ++ struct work_struct *work; ++ } userptr; ++ ++ /** for phys allocated objects */ ++ struct drm_dma_handle *phys_handle; + }; + #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base) + diff --git a/queue-4.4/series b/queue-4.4/series index 4a6e4032a74..5b9fb97da95 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -13,3 +13,4 @@ xenbus-don-t-look-up-transaction-ids-for-ordinary-writes.patch drm-i915-gen9-fix-the-wawmmemoryreadlatency-implementation.patch revert-drm-i915-check-live-status-before-reading-edid.patch drm-i915-account-for-tseg-size-when-determining-865g-stolen-base.patch +drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch