drm/i915: Call drm_vblank_post_modeset() on error paths.
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 6 Jun 2009 08:45:59 +0000 (09:45 +0100)
committerEric Anholt <eric@anholt.net>
Tue, 9 Jun 2009 21:41:26 +0000 (14:41 -0700)
Ensure that the drm_vblank_pre_modeset() is always balanced by
drm_vblank_post_modeset() within intel_crtc_mode_set().

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/intel_display.c

index c5c45827ca01ba14992196469052944aff9ea939..a87eeffc2c8db4e5e47ef954769db1e84f97d482 100644 (file)
@@ -1598,6 +1598,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
        ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, &clock);
        if (!ok) {
                DRM_ERROR("Couldn't find PLL settings for mode!\n");
+               drm_vblank_post_modeset(dev, pipe);
                return -EINVAL;
        }
 
@@ -1858,12 +1859,9 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
 
        /* Flush the plane changes */
        ret = intel_pipe_set_base(crtc, x, y, old_fb);
-       if (ret != 0)
-           return ret;
-
        drm_vblank_post_modeset(dev, pipe);
 
-       return 0;
+       return ret;
 }
 
 /** Loads the palette/gamma unit for the CRTC with the prepared values */