|
@@ -388,12 +388,9 @@ out:
|
|
|
|
|
|
sg_free_table(g2d_userptr->sgt);
|
|
|
kfree(g2d_userptr->sgt);
|
|
|
- g2d_userptr->sgt = NULL;
|
|
|
|
|
|
drm_free_large(g2d_userptr->pages);
|
|
|
- g2d_userptr->pages = NULL;
|
|
|
kfree(g2d_userptr);
|
|
|
- g2d_userptr = NULL;
|
|
|
}
|
|
|
|
|
|
static dma_addr_t *g2d_userptr_get_dma_addr(struct drm_device *drm_dev,
|
|
@@ -466,8 +463,8 @@ static dma_addr_t *g2d_userptr_get_dma_addr(struct drm_device *drm_dev,
|
|
|
pages = drm_calloc_large(npages, sizeof(struct page *));
|
|
|
if (!pages) {
|
|
|
DRM_ERROR("failed to allocate pages.\n");
|
|
|
- kfree(g2d_userptr);
|
|
|
- return ERR_PTR(-ENOMEM);
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto err_free;
|
|
|
}
|
|
|
|
|
|
vma = find_vma(current->mm, userptr);
|
|
@@ -543,7 +540,6 @@ err_sg_free_table:
|
|
|
|
|
|
err_free_sgt:
|
|
|
kfree(sgt);
|
|
|
- sgt = NULL;
|
|
|
|
|
|
err_free_userptr:
|
|
|
exynos_gem_put_pages_to_userptr(g2d_userptr->pages,
|
|
@@ -555,9 +551,9 @@ err_put_vma:
|
|
|
|
|
|
err_free_pages:
|
|
|
drm_free_large(pages);
|
|
|
+
|
|
|
+err_free:
|
|
|
kfree(g2d_userptr);
|
|
|
- pages = NULL;
|
|
|
- g2d_userptr = NULL;
|
|
|
|
|
|
return ERR_PTR(ret);
|
|
|
}
|