summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2014-11-06 14:33:19 +0100
committerThierry Reding <treding@nvidia.com>2014-11-13 16:18:33 +0100
commitb88f005ea38f29b50e55fc7eb25d92ea78a2eeab (patch)
tree5ee6deb92ef5aa4e3a7dbf6e6fd68be4043a50b5
parent9aaa0cebcb3ebabd52a2a269a50fe3525d8deed1 (diff)
downloadlinux-b88f005ea38f29b50e55fc7eb25d92ea78a2eeab.tar.bz2
drm/tegra: fb: Properly release GEM objects on failure
When fbdev initialization fails, make sure to unreference the GEM objects properly. Note that we can't do this in the general error unwinding path because ownership of the GEM object references is transferred to the framebuffer upon creation. Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/gpu/drm/tegra/fb.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
index ec5ae7cf4349..a64f23af0841 100644
--- a/drivers/gpu/drm/tegra/fb.c
+++ b/drivers/gpu/drm/tegra/fb.c
@@ -227,7 +227,7 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
info = framebuffer_alloc(0, drm->dev);
if (!info) {
dev_err(drm->dev, "failed to allocate framebuffer info\n");
- tegra_bo_free_object(&bo->gem);
+ drm_gem_object_unreference_unlocked(&bo->gem);
return -ENOMEM;
}
@@ -235,6 +235,7 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
if (IS_ERR(fbdev->fb)) {
dev_err(drm->dev, "failed to allocate DRM framebuffer\n");
err = PTR_ERR(fbdev->fb);
+ drm_gem_object_unreference_unlocked(&bo->gem);
goto release;
}