aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Crisci <tony@dubstepdish.com>2017-07-24 19:50:13 -0400
committerTony Crisci <tony@dubstepdish.com>2017-07-24 19:50:13 -0400
commit8b6dc483557a2b088893ce9b2c2b9c053df8a99e (patch)
tree850cecaf7efef665b4e9cc8a5ad9a1503f8f7db1
parent13f3c69ec6fc36f04f60a6b3593320ffcbd41d18 (diff)
bugfix: add null check on output gbm on pageflip
The gbm for the output might be null for the pageflip in the case that the output has been disconnected. The gbm might be set to null by wlr_drm_output_cleanup() in this case. If the output is cleaned up before the pageflip, then a double free will crash the compositor on the call to gbm_surface_release_buffer() in the pageflip handler. The outputs buffer object bo[1] will point to invalid memory.
-rw-r--r--backend/drm/drm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index 618274a6..bba3a390 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -631,7 +631,7 @@ static void page_flip_handler(int fd, unsigned seq,
struct wlr_backend_state *state =
wl_container_of(output->renderer, state, renderer);
- if (output->bo[1]) {
+ if (output->gbm && output->bo[1]) {
gbm_surface_release_buffer(output->gbm, output->bo[1]);
output->bo[1] = NULL;
}