drm/i915: Prevent out of range pt in gen6_for_each_pde
authorMichel Thierry <michel.thierry@intel.com>
Tue, 24 Mar 2015 15:46:19 +0000 (15:46 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 27 Mar 2015 08:24:55 +0000 (09:24 +0100)
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 <mika.kuoppala@intel.com>
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_gtt.h

index 0dad42634fd53addefea43714e9ae0690cdbc8f6..3d873467377e289dd16dc8bab89de56af237cb7f 100644 (file)
@@ -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)