Commit 7a8a4b07 authored by xinhui pan's avatar xinhui pan Committed by Maarten Lankhorst
Browse files

drm/ttm: Fix a memory leak



Free the memory on failure.
Also no need to re-alloc memory on retry.

Signed-off-by: default avatarxinhui pan <xinhui.pan@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210219042547.44855-1-xinhui.pan@amd.com


Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
CC: stable@vger.kernel.org # 5.11
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
parent 583065c7
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -959,8 +959,10 @@ static int ttm_bo_bounce_temp_buffer(struct ttm_buffer_object *bo,
		return ret;
	/* move to the bounce domain */
	ret = ttm_bo_handle_move_mem(bo, &hop_mem, false, ctx, NULL);
	if (ret)
	if (ret) {
		ttm_resource_free(bo, &hop_mem);
		return ret;
	}
	return 0;
}

@@ -991,18 +993,19 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
	 * stop and the driver will be called to make
	 * the second hop.
	 */
bounce:
	ret = ttm_bo_mem_space(bo, placement, &mem, ctx);
	if (ret)
		return ret;
bounce:
	ret = ttm_bo_handle_move_mem(bo, &mem, false, ctx, &hop);
	if (ret == -EMULTIHOP) {
		ret = ttm_bo_bounce_temp_buffer(bo, &mem, ctx, &hop);
		if (ret)
			return ret;
			goto out;
		/* try and move to final place now. */
		goto bounce;
	}
out:
	if (ret)
		ttm_resource_free(bo, &mem);
	return ret;