drm/i915: Only update state on crtc's that are part of the atomic state.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 13 Jul 2015 14:30:14 +0000 (16:30 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 14 Jul 2015 12:00:32 +0000 (14:00 +0200)
This is probably hard to hit right now because in most cases all
atomic locks are taken, but after conversion to atomic this will make
it more likely to corrupt the crtc->config pointer, resulting in hard
to find bugs.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index 00c60c1c5162eff6bab32df1ed4306efecdd53c3..9995df578fa8d4d8ec2f5416cc18cc28bf7392b8 100644 (file)
@@ -12312,6 +12312,7 @@ intel_modeset_update_state(struct drm_atomic_state *state)
        struct drm_crtc *crtc;
        struct drm_crtc_state *crtc_state;
        struct drm_connector *connector;
+       int i;
 
        intel_shared_dpll_commit(state);
 
@@ -12331,7 +12332,7 @@ intel_modeset_update_state(struct drm_atomic_state *state)
        intel_modeset_update_staged_output_state(state->dev);
 
        /* Double check state. */
-       for_each_crtc(dev, crtc) {
+       for_each_crtc_in_state(state, crtc, crtc_state, i) {
                WARN_ON(crtc->state->enable != intel_crtc_in_use(crtc));
 
                to_intel_crtc(crtc)->config = to_intel_crtc_state(crtc->state);