drm/amd/amdgpu: fix refcount leak
[Why] the gem object rfb->base.obj[0] is get according to num_planes in amdgpufb_create, but is not put according to num_planes [How] put rfb->base.obj[0] in amdgpu_fbdev_destroy according to num_planes Signed-off-by: Jingwen Chen <Jingwen.Chen2@amd.com> Acked-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
080039273b
commit
fa7e6abc75
@ -288,10 +288,13 @@ out:
|
|||||||
static int amdgpu_fbdev_destroy(struct drm_device *dev, struct amdgpu_fbdev *rfbdev)
|
static int amdgpu_fbdev_destroy(struct drm_device *dev, struct amdgpu_fbdev *rfbdev)
|
||||||
{
|
{
|
||||||
struct amdgpu_framebuffer *rfb = &rfbdev->rfb;
|
struct amdgpu_framebuffer *rfb = &rfbdev->rfb;
|
||||||
|
int i;
|
||||||
|
|
||||||
drm_fb_helper_unregister_fbi(&rfbdev->helper);
|
drm_fb_helper_unregister_fbi(&rfbdev->helper);
|
||||||
|
|
||||||
if (rfb->base.obj[0]) {
|
if (rfb->base.obj[0]) {
|
||||||
|
for (i = 0; i < rfb->base.format->num_planes; i++)
|
||||||
|
drm_gem_object_put(rfb->base.obj[0]);
|
||||||
amdgpufb_destroy_pinned_object(rfb->base.obj[0]);
|
amdgpufb_destroy_pinned_object(rfb->base.obj[0]);
|
||||||
rfb->base.obj[0] = NULL;
|
rfb->base.obj[0] = NULL;
|
||||||
drm_framebuffer_unregister_private(&rfb->base);
|
drm_framebuffer_unregister_private(&rfb->base);
|
||||||
|
Reference in New Issue
Block a user