aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/tegra
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2014-11-06 08:33:19 -0500
committerThierry Reding <treding@nvidia.com>2014-11-13 10:18:33 -0500
commitb88f005ea38f29b50e55fc7eb25d92ea78a2eeab (patch)
tree5ee6deb92ef5aa4e3a7dbf6e6fd68be4043a50b5 /drivers/gpu/drm/tegra
parent9aaa0cebcb3ebabd52a2a269a50fe3525d8deed1 (diff)
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>
Diffstat (limited to 'drivers/gpu/drm/tegra')
-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,
227 info = framebuffer_alloc(0, drm->dev); 227 info = framebuffer_alloc(0, drm->dev);
228 if (!info) { 228 if (!info) {
229 dev_err(drm->dev, "failed to allocate framebuffer info\n"); 229 dev_err(drm->dev, "failed to allocate framebuffer info\n");
230 tegra_bo_free_object(&bo->gem); 230 drm_gem_object_unreference_unlocked(&bo->gem);
231 return -ENOMEM; 231 return -ENOMEM;
232 } 232 }
233 233
@@ -235,6 +235,7 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
235 if (IS_ERR(fbdev->fb)) { 235 if (IS_ERR(fbdev->fb)) {
236 dev_err(drm->dev, "failed to allocate DRM framebuffer\n"); 236 dev_err(drm->dev, "failed to allocate DRM framebuffer\n");
237 err = PTR_ERR(fbdev->fb); 237 err = PTR_ERR(fbdev->fb);
238 drm_gem_object_unreference_unlocked(&bo->gem);
238 goto release; 239 goto release;
239 } 240 }
240 241