From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Make the FBC code a bit less racy by grabbing crtc->mutex in intel_fbc_work_fn() when we go digging through the crtc state. Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/intel_pm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 8780b87..dc65bb4 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -333,9 +333,12 @@ static void intel_fbc_work_fn(struct work_struct *__work) struct intel_fbc_work *work = container_of(to_delayed_work(__work), struct intel_fbc_work, work); + struct drm_crtc *crtc = work->crtc; struct drm_device *dev = work->crtc->dev; struct drm_i915_private *dev_priv = dev->dev_private; + mutex_lock(&crtc->mutex); + mutex_lock(&dev->struct_mutex); if (work == dev_priv->fbc.fbc_work) { /* Double check that we haven't switched fb without cancelling @@ -347,6 +350,8 @@ static void intel_fbc_work_fn(struct work_struct *__work) } mutex_unlock(&dev->struct_mutex); + mutex_unlock(&crtc->mutex); + drm_framebuffer_reference(work->fb); kfree(work); -- 1.8.1.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx