Commit 89709105 authored by Zhipeng Lu's avatar Zhipeng Lu Committed by Zack Rusin
Browse files

drm/vmwgfx: fix a memleak in vmw_gmrid_man_get_node



When ida_alloc_max fails, resources allocated before should be freed,
including *res allocated by kmalloc and ttm_resource_init.

Fixes: d3bcb4b0 ("drm/vmwgfx: switch the TTM backends to self alloc")
Signed-off-by: default avatarZhipeng Lu <alexious@zju.edu.cn>
Signed-off-by: default avatarZack Rusin <zack.rusin@broadcom.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231204091416.3308430-1-alexious@zju.edu.cn
parent 834b1d72
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -64,8 +64,11 @@ static int vmw_gmrid_man_get_node(struct ttm_resource_manager *man,
	ttm_resource_init(bo, place, *res);

	id = ida_alloc_max(&gman->gmr_ida, gman->max_gmr_ids - 1, GFP_KERNEL);
	if (id < 0)
	if (id < 0) {
		ttm_resource_fini(man, *res);
		kfree(*res);
		return id;
	}

	spin_lock(&gman->lock);