drm/rockchip: cleanup fb when drm_gem_fb_afbc_init failed
[ Upstream commit 099593a28138b48feea5be8ce700e5bc4565e31d ]
In the function drm_gem_fb_init_with_funcs, the framebuffer (fb)
and its corresponding object ID have already been registered.
So we need to cleanup the drm framebuffer if the subsequent
execution of drm_gem_fb_afbc_init fails.
Directly call drm_framebuffer_put to ensure that all fb related
resources are cleanup.
Fixes: 7707f7227f ("drm/rockchip: Add support for afbc")
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250509031607.2542187-1-andyshrk@163.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
765cfb0d80
commit
0549c62b2f
@@ -81,16 +81,9 @@ rockchip_fb_create(struct drm_device *dev, struct drm_file *file,
|
||||
}
|
||||
|
||||
if (drm_is_afbc(mode_cmd->modifier[0])) {
|
||||
int ret, i;
|
||||
|
||||
ret = drm_gem_fb_afbc_init(dev, mode_cmd, afbc_fb);
|
||||
if (ret) {
|
||||
struct drm_gem_object **obj = afbc_fb->base.obj;
|
||||
|
||||
for (i = 0; i < info->num_planes; ++i)
|
||||
drm_gem_object_put(obj[i]);
|
||||
|
||||
kfree(afbc_fb);
|
||||
drm_framebuffer_put(&afbc_fb->base);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user