drm/qxl: unref cursor bo when finished with it
authorRay Strode <rstrode@redhat.com>
Mon, 27 Nov 2017 21:50:09 +0000 (16:50 -0500)
committerDave Airlie <airlied@redhat.com>
Fri, 8 Dec 2017 03:36:54 +0000 (13:36 +1000)
qxl_cursor_atomic_update allocs a bo for the cursor that
it never frees up at the end of the function.

This commit fixes that.

Signed-off-by: Ray Strode <rstrode@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/qxl/qxl_display.c

index 4756b3c9bf2cabadd7811accf1057e61c6426825..7335d99244d5b1e6e98ca16e873bfe5d09691a4d 100644 (file)
@@ -575,7 +575,7 @@ static void qxl_cursor_atomic_update(struct drm_plane *plane,
        struct qxl_cursor_cmd *cmd;
        struct qxl_cursor *cursor;
        struct drm_gem_object *obj;
-       struct qxl_bo *cursor_bo, *user_bo = NULL;
+       struct qxl_bo *cursor_bo = NULL, *user_bo = NULL;
        int ret;
        void *user_ptr;
        int size = 64*64*4;
@@ -645,6 +645,8 @@ static void qxl_cursor_atomic_update(struct drm_plane *plane,
        qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false);
        qxl_release_fence_buffer_objects(release);
 
+       qxl_bo_unref(&cursor_bo);
+
        return;
 
 out_backoff: