aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2017-11-27 16:50:09 -0500
committerDave Airlie <airlied@redhat.com>2017-12-07 22:36:54 -0500
commit16c6db3688734b27487a42d0c2a1062d0b2bad03 (patch)
tree96b369e76b2aa8db65426f06afbbf657e13f3823 /drivers
parent3f1f0b1c57dd617e9b0ded50efb8d6c011b85b20 (diff)
drm/qxl: unref cursor bo when finished with it
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/qxl/qxl_display.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 4756b3c9bf2c..7335d99244d5 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -575,7 +575,7 @@ static void qxl_cursor_atomic_update(struct drm_plane *plane,
575 struct qxl_cursor_cmd *cmd; 575 struct qxl_cursor_cmd *cmd;
576 struct qxl_cursor *cursor; 576 struct qxl_cursor *cursor;
577 struct drm_gem_object *obj; 577 struct drm_gem_object *obj;
578 struct qxl_bo *cursor_bo, *user_bo = NULL; 578 struct qxl_bo *cursor_bo = NULL, *user_bo = NULL;
579 int ret; 579 int ret;
580 void *user_ptr; 580 void *user_ptr;
581 int size = 64*64*4; 581 int size = 64*64*4;
@@ -645,6 +645,8 @@ static void qxl_cursor_atomic_update(struct drm_plane *plane,
645 qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false); 645 qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false);
646 qxl_release_fence_buffer_objects(release); 646 qxl_release_fence_buffer_objects(release);
647 647
648 qxl_bo_unref(&cursor_bo);
649
648 return; 650 return;
649 651
650out_backoff: 652out_backoff: