compositor-drm: Set cursor surface to NULL when pageflip fails
authorKristian Høgsberg <krh@bitplanet.net>
Fri, 24 Jan 2014 00:25:06 +0000 (16:25 -0800)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 24 Jan 2014 00:25:06 +0000 (16:25 -0800)
If we VT switch away between  picking a cursor surface and actually doing
the pageflip in drm_output_repaint(), we never set output->cursor_view to
NULL.  Then we unplug all the input devices and as the last pointer device
goes away we destroy the cursor surface.  Then when we switch back, we
call drm_output_set_cursor() with an invalid surface and crashes.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73566

src/compositor-drm.c

index f908cff..154e15e 100644 (file)
@@ -669,6 +669,7 @@ drm_output_repaint(struct weston_output *output_base,
        return 0;
 
 err_pageflip:
+       output->cursor_view = NULL;
        if (output->next) {
                drm_output_release_fb(output, output->next);
                output->next = NULL;