On Wed 06-05-15 12:47:35, Vlastimil Babka wrote:
> On 05/06/2015 09:28 AM, Jan Kara wrote:
> >Convert g2d_userptr_get_dma_addr() to pin pages using get_vaddr_frames().
> >This removes the knowledge about vmas and mmap_sem locking from exynos
> >driver. Also it fixes a problem that the function has been mapping user
> >provided address without holding mmap_sem.
> >
> >Signed-off-by: Jan Kara <jack at suse.cz>
> >---
> >  drivers/gpu/drm/exynos/exynos_drm_g2d.c | 89 ++++++++++--------------------
> >  drivers/gpu/drm/exynos/exynos_drm_gem.c | 97 
> > ---------------------------------
> >  2 files changed, 29 insertions(+), 157 deletions(-)
> >
> >diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c 
> >b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
> >index 81a250830808..265519c0fe2d 100644
> >--- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c
> >+++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
> ...
> >@@ -456,65 +458,37 @@ static dma_addr_t *g2d_userptr_get_dma_addr(struct 
> >drm_device *drm_dev,
> >             return ERR_PTR(-ENOMEM);
> >
> >     atomic_set(&g2d_userptr->refcount, 1);
> >+    g2d_userptr->size = size;
> >
> >     start = userptr & PAGE_MASK;
> >     offset = userptr & ~PAGE_MASK;
> >     end = PAGE_ALIGN(userptr + size);
> >     npages = (end - start) >> PAGE_SHIFT;
> >-    g2d_userptr->npages = npages;
> >-
> >-    pages = drm_calloc_large(npages, sizeof(struct page *));
> >-    if (!pages) {
> >-            DRM_ERROR("failed to allocate pages.\n");
> >-            ret = -ENOMEM;
> >+    vec = g2d_userptr->vec = frame_vector_create(npages);
> >+    if (!vec)
> >             goto err_free;
> >-    }
> >
> >-    down_read(&current->mm->mmap_sem);
> >-    vma = find_vma(current->mm, userptr);
> >-    if (!vma) {
> >-            up_read(&current->mm->mmap_sem);
> >-            DRM_ERROR("failed to get vm region.\n");
> >+    ret = get_vaddr_frames(start, npages, 1, 1, vec);
> 
> Use true instead of 1.
  Yes, thanks!

                                                                Honza
-- 
Jan Kara <jack at suse.cz>
SUSE Labs, CR

Reply via email to