Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de0b523a authored by Frediano Ziglio's avatar Frediano Ziglio Committed by Dave Airlie
Browse files

drm/qxl: Handle correctly failures in qxl_alloc_relase_reserved



Free resources correctly if function fails

Signed-off-by: default avatarFrediano Ziglio <fziglio@redhat.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 6ecf5c2b
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@ int qxl_alloc_release_reserved(struct qxl_device *qdev, unsigned long size,
		ret = qxl_release_bo_alloc(qdev, &qdev->current_release_bo[cur_idx]);
		if (ret) {
			mutex_unlock(&qdev->release_mutex);
			qxl_release_free(qdev, *release);
			return ret;
		}
	}
@@ -377,13 +378,17 @@ int qxl_alloc_release_reserved(struct qxl_device *qdev, unsigned long size,

	mutex_unlock(&qdev->release_mutex);

	qxl_release_list_add(*release, bo);
	ret = qxl_release_list_add(*release, bo);
	qxl_bo_unref(&bo);
	if (ret) {
		qxl_release_free(qdev, *release);
		return ret;
	}

	info = qxl_release_map(qdev, *release);
	info->id = idr_ret;
	qxl_release_unmap(qdev, *release, info);

	qxl_bo_unref(&bo);
	return ret;
}