Message ID | 20190927134616.21899-3-yuq825@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/lima: simplify driver by using more drm helpers | expand |
On 27/09/2019 14:46, Qiang Yu wrote: > v2: > use drm_gem_objects_lookup_user instead of > drm_gem_objects_lookup. > > Cc: Eric Anholt <eric@anholt.net> > Signed-off-by: Qiang Yu <yuq825@gmail.com> Looks familiar :) Nit: please write a commit message. But otherwise: Reviewed-by: Steven Price <steven.price@arm.com> > --- > drivers/gpu/drm/v3d/v3d_gem.c | 49 +++-------------------------------- > 1 file changed, 3 insertions(+), 46 deletions(-) > > diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c > index 4c4b59ae2c81..75a3b448f3fa 100644 > --- a/drivers/gpu/drm/v3d/v3d_gem.c > +++ b/drivers/gpu/drm/v3d/v3d_gem.c > @@ -290,10 +290,6 @@ v3d_lookup_bos(struct drm_device *dev, > u64 bo_handles, > u32 bo_count) > { > - u32 *handles; > - int ret = 0; > - int i; > - > job->bo_count = bo_count; > > if (!job->bo_count) { > @@ -304,48 +300,9 @@ v3d_lookup_bos(struct drm_device *dev, > return -EINVAL; > } > > - job->bo = kvmalloc_array(job->bo_count, > - sizeof(struct drm_gem_cma_object *), > - GFP_KERNEL | __GFP_ZERO); > - if (!job->bo) { > - DRM_DEBUG("Failed to allocate validated BO pointers\n"); > - return -ENOMEM; > - } > - > - handles = kvmalloc_array(job->bo_count, sizeof(u32), GFP_KERNEL); > - if (!handles) { > - ret = -ENOMEM; > - DRM_DEBUG("Failed to allocate incoming GEM handles\n"); > - goto fail; > - } > - > - if (copy_from_user(handles, > - (void __user *)(uintptr_t)bo_handles, > - job->bo_count * sizeof(u32))) { > - ret = -EFAULT; > - DRM_DEBUG("Failed to copy in GEM handles\n"); > - goto fail; > - } > - > - spin_lock(&file_priv->table_lock); > - for (i = 0; i < job->bo_count; i++) { > - struct drm_gem_object *bo = idr_find(&file_priv->object_idr, > - handles[i]); > - if (!bo) { > - DRM_DEBUG("Failed to look up GEM BO %d: %d\n", > - i, handles[i]); > - ret = -ENOENT; > - spin_unlock(&file_priv->table_lock); > - goto fail; > - } > - drm_gem_object_get(bo); > - job->bo[i] = bo; > - } > - spin_unlock(&file_priv->table_lock); > - > -fail: > - kvfree(handles); > - return ret; > + return drm_gem_objects_lookup_user(file_priv, > + (void __user *)(uintptr_t)bo_handles, > + job->bo_count, &job->bo); > } > > static void >
diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c index 4c4b59ae2c81..75a3b448f3fa 100644 --- a/drivers/gpu/drm/v3d/v3d_gem.c +++ b/drivers/gpu/drm/v3d/v3d_gem.c @@ -290,10 +290,6 @@ v3d_lookup_bos(struct drm_device *dev, u64 bo_handles, u32 bo_count) { - u32 *handles; - int ret = 0; - int i; - job->bo_count = bo_count; if (!job->bo_count) { @@ -304,48 +300,9 @@ v3d_lookup_bos(struct drm_device *dev, return -EINVAL; } - job->bo = kvmalloc_array(job->bo_count, - sizeof(struct drm_gem_cma_object *), - GFP_KERNEL | __GFP_ZERO); - if (!job->bo) { - DRM_DEBUG("Failed to allocate validated BO pointers\n"); - return -ENOMEM; - } - - handles = kvmalloc_array(job->bo_count, sizeof(u32), GFP_KERNEL); - if (!handles) { - ret = -ENOMEM; - DRM_DEBUG("Failed to allocate incoming GEM handles\n"); - goto fail; - } - - if (copy_from_user(handles, - (void __user *)(uintptr_t)bo_handles, - job->bo_count * sizeof(u32))) { - ret = -EFAULT; - DRM_DEBUG("Failed to copy in GEM handles\n"); - goto fail; - } - - spin_lock(&file_priv->table_lock); - for (i = 0; i < job->bo_count; i++) { - struct drm_gem_object *bo = idr_find(&file_priv->object_idr, - handles[i]); - if (!bo) { - DRM_DEBUG("Failed to look up GEM BO %d: %d\n", - i, handles[i]); - ret = -ENOENT; - spin_unlock(&file_priv->table_lock); - goto fail; - } - drm_gem_object_get(bo); - job->bo[i] = bo; - } - spin_unlock(&file_priv->table_lock); - -fail: - kvfree(handles); - return ret; + return drm_gem_objects_lookup_user(file_priv, + (void __user *)(uintptr_t)bo_handles, + job->bo_count, &job->bo); } static void
v2: use drm_gem_objects_lookup_user instead of drm_gem_objects_lookup. Cc: Eric Anholt <eric@anholt.net> Signed-off-by: Qiang Yu <yuq825@gmail.com> --- drivers/gpu/drm/v3d/v3d_gem.c | 49 +++-------------------------------- 1 file changed, 3 insertions(+), 46 deletions(-)