diff options
| author | Ingo Molnar <mingo@kernel.org> | 2024-03-25 13:32:29 +0300 | 
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2024-03-25 13:32:29 +0300 | 
| commit | f4566a1e73957800df75a3dd2dccee8a4697f327 (patch) | |
| tree | b043b875228c0b25988af66c680d60cae69d761d /drivers/gpu/drm/lima/lima_gem.c | |
| parent | b9e6e28663928cab836a19abbdec3d036a07db3b (diff) | |
| parent | 4cece764965020c22cff7665b18a012006359095 (diff) | |
| download | linux-f4566a1e73957800df75a3dd2dccee8a4697f327.tar.xz | |
Merge tag 'v6.9-rc1' into sched/core, to pick up fixes and to refresh the branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/lima/lima_gem.c')
| -rw-r--r-- | drivers/gpu/drm/lima/lima_gem.c | 23 | 
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/gpu/drm/lima/lima_gem.c b/drivers/gpu/drm/lima/lima_gem.c index 4f9736e5f929..7ea244d876ca 100644 --- a/drivers/gpu/drm/lima/lima_gem.c +++ b/drivers/gpu/drm/lima/lima_gem.c @@ -75,29 +75,34 @@ int lima_heap_alloc(struct lima_bo *bo, struct lima_vm *vm)  	} else {  		bo->base.sgt = kmalloc(sizeof(*bo->base.sgt), GFP_KERNEL);  		if (!bo->base.sgt) { -			sg_free_table(&sgt); -			return -ENOMEM; +			ret = -ENOMEM; +			goto err_out0;  		}  	}  	ret = dma_map_sgtable(dev, &sgt, DMA_BIDIRECTIONAL, 0); -	if (ret) { -		sg_free_table(&sgt); -		kfree(bo->base.sgt); -		bo->base.sgt = NULL; -		return ret; -	} +	if (ret) +		goto err_out1;  	*bo->base.sgt = sgt;  	if (vm) {  		ret = lima_vm_map_bo(vm, bo, old_size >> PAGE_SHIFT);  		if (ret) -			return ret; +			goto err_out2;  	}  	bo->heap_size = new_size;  	return 0; + +err_out2: +	dma_unmap_sgtable(dev, &sgt, DMA_BIDIRECTIONAL, 0); +err_out1: +	kfree(bo->base.sgt); +	bo->base.sgt = NULL; +err_out0: +	sg_free_table(&sgt); +	return ret;  }  int lima_gem_create_handle(struct drm_device *dev, struct drm_file *file,  | 
