drm/ast: Fix memleak in error path in ast_bo_create()
The allocated struct ast_bo was not freed in all error paths. This patch consolidates error handling and fixes this. Signed-off-by: Egbert Eich <eich@suse.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
f3b91060b5
commit
b2d44e2381
|
@ -323,10 +323,8 @@ int ast_bo_create(struct drm_device *dev, int size, int align,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
ret = drm_gem_object_init(dev, &astbo->gem, size);
|
ret = drm_gem_object_init(dev, &astbo->gem, size);
|
||||||
if (ret) {
|
if (ret)
|
||||||
kfree(astbo);
|
goto error;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
astbo->bo.bdev = &ast->ttm.bdev;
|
astbo->bo.bdev = &ast->ttm.bdev;
|
||||||
|
|
||||||
|
@ -340,10 +338,13 @@ int ast_bo_create(struct drm_device *dev, int size, int align,
|
||||||
align >> PAGE_SHIFT, false, NULL, acc_size,
|
align >> PAGE_SHIFT, false, NULL, acc_size,
|
||||||
NULL, NULL, ast_bo_ttm_destroy);
|
NULL, NULL, ast_bo_ttm_destroy);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
goto error;
|
||||||
|
|
||||||
*pastbo = astbo;
|
*pastbo = astbo;
|
||||||
return 0;
|
return 0;
|
||||||
|
error:
|
||||||
|
kfree(astbo);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u64 ast_bo_gpu_offset(struct ast_bo *bo)
|
static inline u64 ast_bo_gpu_offset(struct ast_bo *bo)
|
||||||
|
|
Loading…
Reference in a new issue