diff options
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_bo.c')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo.c | 13 | 
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index b67cfcaa661..36f4b28c1b9 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -1204,6 +1204,7 @@ int ttm_bo_init(struct ttm_bo_device *bdev,  			(*destroy)(bo);  		else  			kfree(bo); +		ttm_mem_global_free(mem_glob, acc_size);  		return -EINVAL;  	}  	bo->destroy = destroy; @@ -1307,22 +1308,14 @@ int ttm_bo_create(struct ttm_bo_device *bdev,  			struct ttm_buffer_object **p_bo)  {  	struct ttm_buffer_object *bo; -	struct ttm_mem_global *mem_glob = bdev->glob->mem_glob;  	size_t acc_size;  	int ret; -	acc_size = ttm_bo_acc_size(bdev, size, sizeof(struct ttm_buffer_object)); -	ret = ttm_mem_global_alloc(mem_glob, acc_size, false, false); -	if (unlikely(ret != 0)) -		return ret; -  	bo = kzalloc(sizeof(*bo), GFP_KERNEL); - -	if (unlikely(bo == NULL)) { -		ttm_mem_global_free(mem_glob, acc_size); +	if (unlikely(bo == NULL))  		return -ENOMEM; -	} +	acc_size = ttm_bo_acc_size(bdev, size, sizeof(struct ttm_buffer_object));  	ret = ttm_bo_init(bdev, bo, size, type, placement, page_alignment,  				buffer_start, interruptible,  			  persistent_swap_storage, acc_size, NULL, NULL);  |