summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/gpu/drm/qxl
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/gpu/drm/qxl')
-rw-r--r--kernel/drivers/gpu/drm/qxl/qxl_cmd.c1
-rw-r--r--kernel/drivers/gpu/drm/qxl/qxl_ioctl.c4
2 files changed, 4 insertions, 1 deletions
diff --git a/kernel/drivers/gpu/drm/qxl/qxl_cmd.c b/kernel/drivers/gpu/drm/qxl/qxl_cmd.c
index 97823644d..f33251d67 100644
--- a/kernel/drivers/gpu/drm/qxl/qxl_cmd.c
+++ b/kernel/drivers/gpu/drm/qxl/qxl_cmd.c
@@ -505,6 +505,7 @@ int qxl_hw_surface_alloc(struct qxl_device *qdev,
cmd = (struct qxl_surface_cmd *)qxl_release_map(qdev, release);
cmd->type = QXL_SURFACE_CMD_CREATE;
+ cmd->flags = QXL_SURF_FLAG_KEEP_DATA;
cmd->u.surface_create.format = surf->surf.format;
cmd->u.surface_create.width = surf->surf.width;
cmd->u.surface_create.height = surf->surf.height;
diff --git a/kernel/drivers/gpu/drm/qxl/qxl_ioctl.c b/kernel/drivers/gpu/drm/qxl/qxl_ioctl.c
index b110883f8..7354a4cda 100644
--- a/kernel/drivers/gpu/drm/qxl/qxl_ioctl.c
+++ b/kernel/drivers/gpu/drm/qxl/qxl_ioctl.c
@@ -122,8 +122,10 @@ static struct qxl_bo *qxlhw_handle_to_bo(struct qxl_device *qdev,
qobj = gem_to_qxl_bo(gobj);
ret = qxl_release_list_add(release, qobj);
- if (ret)
+ if (ret) {
+ drm_gem_object_unreference_unlocked(gobj);
return NULL;
+ }
return qobj;
}