drm/vmwgfx: fix a memleak in vmw_gmrid_man_get_node
[ Upstream commit89709105a6
] When ida_alloc_max fails, resources allocated before should be freed, including *res allocated by kmalloc and ttm_resource_init. Fixes:d3bcb4b02f
("drm/vmwgfx: switch the TTM backends to self alloc") Signed-off-by: Zhipeng Lu <alexious@zju.edu.cn> Signed-off-by: Zack Rusin <zack.rusin@broadcom.com> Link: https://patchwork.freedesktop.org/patch/msgid/20231204091416.3308430-1-alexious@zju.edu.cn Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
@ -64,8 +64,11 @@ static int vmw_gmrid_man_get_node(struct ttm_resource_manager *man,
|
|||||||
ttm_resource_init(bo, place, *res);
|
ttm_resource_init(bo, place, *res);
|
||||||
|
|
||||||
id = ida_alloc_max(&gman->gmr_ida, gman->max_gmr_ids - 1, GFP_KERNEL);
|
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;
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock(&gman->lock);
|
spin_lock(&gman->lock);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user