drm/i915/fbc: make sure we cancel the work function at fbc_disable
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Tue, 19 Jan 2016 13:35:47 +0000 (11:35 -0200)
committerPaulo Zanoni <paulo.r.zanoni@intel.com>
Fri, 29 Jan 2016 20:15:43 +0000 (18:15 -0200)
Just to be sure nothing will survive a module unload. We need to do
this after the unlock in order to make sure the function won't get
stuck trying to grab the lock we already own while we wait for it to
finish.

Reported-by: Reported-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1453210558-7875-15-git-send-email-paulo.r.zanoni@intel.com
drivers/gpu/drm/i915/intel_fbc.c

index 04783432d6f78e0adb135910fb8652483dff45ea..35d265092bc16041332341d332f90c65809aacd5 100644 (file)
@@ -1098,6 +1098,8 @@ void intel_fbc_disable(struct intel_crtc *crtc)
                __intel_fbc_disable(dev_priv);
        }
        mutex_unlock(&fbc->lock);
+
+       cancel_work_sync(&fbc->work.work);
 }
 
 /**
@@ -1117,6 +1119,8 @@ void intel_fbc_global_disable(struct drm_i915_private *dev_priv)
        if (fbc->enabled)
                __intel_fbc_disable(dev_priv);
        mutex_unlock(&fbc->lock);
+
+       cancel_work_sync(&fbc->work.work);
 }
 
 /**