From: Michel Thierry Date: Tue, 24 Mar 2015 15:46:19 +0000 (+0000) Subject: drm/i915: Prevent out of range pt in gen6_for_each_pde X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=fdc454c1484a20e1345cf4e4d7a9feaee814147f;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git drm/i915: Prevent out of range pt in gen6_for_each_pde Found by static analysis tool, this was harmless as the pt was not used out of scope though. Introduced by commit 678d96fbb3b5995a2fdff2bca5e1ab4a40b7e968 ("drm/i915: Track GEN6 page table usage"). Cc: Mika Kuoppala Signed-off-by: Michel Thierry Reviewed-by: Mika Kuoppala Signed-off-by: Daniel Vetter --- diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h index 0dad42634fd5..3d873467377e 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.h +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h @@ -339,9 +339,9 @@ struct i915_hw_ppgtt { * XXX: temp is not actually needed, but it saves doing the ALIGN operation. */ #define gen6_for_each_pde(pt, pd, start, length, temp, iter) \ - for (iter = gen6_pde_index(start), pt = (pd)->page_table[iter]; \ - length > 0 && iter < I915_PDES; \ - pt = (pd)->page_table[++iter], \ + for (iter = gen6_pde_index(start); \ + pt = (pd)->page_table[iter], length > 0 && iter < I915_PDES; \ + iter++, \ temp = ALIGN(start+1, 1 << GEN6_PDE_SHIFT) - start, \ temp = min_t(unsigned, temp, length), \ start += temp, length -= temp)