aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/gpu/drm/lima/lima_gem.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2024-03-25 21:11:58 +0100
committerThomas Zimmermann <tzimmermann@suse.de>2024-03-25 21:11:58 +0100
commit36a1818f5a1e50b805317ba13f827067d50f6970 (patch)
treeb9414b9509bea9f006c292a46a7632ffb57d18ee /drivers/gpu/drm/lima/lima_gem.c
parentdma-buf: Fix NULL pointer dereference in sanitycheck() (diff)
parentLinux 6.9-rc1 (diff)
downloadwireguard-linux-36a1818f5a1e50b805317ba13f827067d50f6970.tar.xz
wireguard-linux-36a1818f5a1e50b805317ba13f827067d50f6970.zip
Merge drm/drm-fixes into drm-misc-fixes
Backmerging to get drm-misc-fixes to the state of v6.9-rc1. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Diffstat (limited to '')
-rw-r--r--drivers/gpu/drm/lima/lima_gem.c23
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,