From: Frediano Ziglio Date: Wed, 3 Jun 2015 11:09:15 +0000 (+0100) Subject: drm/qxl: Handle correctly failures in qxl_alloc_relase_reserved X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=de0b523a5a4c99859513238559d62e0dd4a9a67e;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git drm/qxl: Handle correctly failures in qxl_alloc_relase_reserved Free resources correctly if function fails Signed-off-by: Frediano Ziglio Reviewed-by: Dave Airlie Signed-off-by: Dave Airlie --- diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c index 6fd8e50e3506..00604ed173a2 100644 --- a/drivers/gpu/drm/qxl/qxl_release.c +++ b/drivers/gpu/drm/qxl/qxl_release.c @@ -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; }