drm/i915: Don't overrun the intel_wa_regs array
authorDamien Lespiau <damien.lespiau@intel.com>
Sat, 30 Aug 2014 15:51:00 +0000 (16:51 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 3 Sep 2014 10:38:54 +0000 (12:38 +0200)
When entering intel_ring_emit_wa() with num_wa_regs equal to
I915_MAX_WA_REGS, we end up indexing the intel_wa_regs array beyond its
allocation.

Fix the check then.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_ringbuffer.c

index 12135ef360603a10940c8b584e0032768d18cf8b..96618c0c508510e5a4c4ce04ec1a724c4496d7fc 100644 (file)
@@ -663,7 +663,7 @@ static inline void intel_ring_emit_wa(struct intel_engine_cs *ring,
        struct drm_device *dev = ring->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
 
-       if (dev_priv->num_wa_regs > I915_MAX_WA_REGS)
+       if (dev_priv->num_wa_regs >= I915_MAX_WA_REGS)
                return;
 
        intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1));