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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Feb 2018 14:42:25 +0000 (15:42 +0100)
commit 16c6db3688734b27487a42d0c2a1062d0b2bad03 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/qxl/qxl_display.c

index afbf50d..ced6564 100644 (file)
@@ -564,7 +564,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;
@@ -634,6 +634,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: