Make sure to always call get before put on the fb. Before this
patch, there is a window where we can put before get if the
callback triggers right away (or if the interrupt triggers quickly
enough). We fix this by taking the reference on the fb before we
setup the async waiting.
BUG=chrome-os-partner:16069
TEST=by hand, compiles and runs (but I was never able to repro the issue)
Change-Id: Iedde277c8f9cfebf6c4f6b0675e4d3bace52f637
Reviewed-on: https://gerrit.chromium.org/gerrit/41238
Tested-by: Stéphane Marchesin <marcheu@chromium.org>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Commit-Queue: Stéphane Marchesin <marcheu@chromium.org>
mutex_unlock(&dev->struct_mutex);
+ exynos_drm_fb_get(exynos_fb);
+
#ifdef CONFIG_DMA_SHARED_BUFFER_USES_KDS
exynos_fb->crtc = crtc;
if (gem_ob->base.export_dma_buf) {
}
#endif
- exynos_drm_fb_get(exynos_fb);
-
trace_exynos_flip_request(exynos_crtc->pipe);
return 0;