aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2012-04-23 06:36:39 -0400
committerInki Dae <inki.dae@samsung.com>2012-04-23 07:31:20 -0400
commit887ea3db26ec8a43b650ada273e1159492939c10 (patch)
tree9676cbda8875ec020189cb07c98ba7df738f0eb2 /drivers/gpu
parent273a50fbcd2d2c0652bbda58dd1985f932ce6d75 (diff)
drm/exynos: fixed duplicatd memory allocation bug.
the gem was already allocated at gem allocation time but is allocated at page fault handler so this patch fixes the problem that gem was allocated one more time. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_gem.c12
1 files changed, 0 insertions, 12 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 26d51979116b..b1850c30e043 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -712,7 +712,6 @@ int exynos_drm_gem_dumb_destroy(struct drm_file *file_priv,
712int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) 712int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
713{ 713{
714 struct drm_gem_object *obj = vma->vm_private_data; 714 struct drm_gem_object *obj = vma->vm_private_data;
715 struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);
716 struct drm_device *dev = obj->dev; 715 struct drm_device *dev = obj->dev;
717 unsigned long f_vaddr; 716 unsigned long f_vaddr;
718 pgoff_t page_offset; 717 pgoff_t page_offset;
@@ -724,21 +723,10 @@ int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
724 723
725 mutex_lock(&dev->struct_mutex); 724 mutex_lock(&dev->struct_mutex);
726 725
727 /*
728 * allocate all pages as desired size if user wants to allocate
729 * physically non-continuous memory.
730 */
731 if (exynos_gem_obj->flags & EXYNOS_BO_NONCONTIG) {
732 ret = exynos_drm_gem_get_pages(obj);
733 if (ret < 0)
734 goto err;
735 }
736
737 ret = exynos_drm_gem_map_pages(obj, vma, f_vaddr, page_offset); 726 ret = exynos_drm_gem_map_pages(obj, vma, f_vaddr, page_offset);
738 if (ret < 0) 727 if (ret < 0)
739 DRM_ERROR("failed to map pages.\n"); 728 DRM_ERROR("failed to map pages.\n");
740 729
741err:
742 mutex_unlock(&dev->struct_mutex); 730 mutex_unlock(&dev->struct_mutex);
743 731
744 return convert_to_vm_err_msg(ret); 732 return convert_to_vm_err_msg(ret);