Clean up duplicated logic between import and new paths.

Signed-off-by: Rob Clark <[email protected]>
---
 drivers/gpu/drm/msm/msm_gem.c | 34 +++++++++++++++-------------------
 1 file changed, 15 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index 1aa844ce4f2c..59143be07428 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -1232,10 +1232,21 @@ static int msm_gem_new_impl(struct drm_device *dev, 
uint32_t flags,
        return 0;
 }
 
+static int msm_gem_init_bookkeeping(struct drm_gem_object *obj)
+{
+       struct msm_drm_private *priv = obj->dev->dev_private;
+
+       drm_gem_lru_move_tail(&priv->lru.unbacked, obj);
+
+       mutex_lock(&priv->obj_lock);
+       list_add_tail(&to_msm_bo(obj)->node, &priv->objects);
+       mutex_unlock(&priv->obj_lock);
+
+       return drm_gem_create_mmap_offset(obj);
+}
+
 struct drm_gem_object *msm_gem_new(struct drm_device *dev, size_t size, 
uint32_t flags)
 {
-       struct msm_drm_private *priv = dev->dev_private;
-       struct msm_gem_object *msm_obj;
        struct drm_gem_object *obj = NULL;
        int ret;
 
@@ -1251,8 +1262,6 @@ struct drm_gem_object *msm_gem_new(struct drm_device 
*dev, size_t size, uint32_t
        if (ret)
                return ERR_PTR(ret);
 
-       msm_obj = to_msm_bo(obj);
-
        ret = drm_gem_object_init(dev, obj, size);
        if (ret)
                goto fail;
@@ -1264,13 +1273,7 @@ struct drm_gem_object *msm_gem_new(struct drm_device 
*dev, size_t size, uint32_t
         */
        mapping_set_gfp_mask(obj->filp->f_mapping, GFP_HIGHUSER);
 
-       drm_gem_lru_move_tail(&priv->lru.unbacked, obj);
-
-       mutex_lock(&priv->obj_lock);
-       list_add_tail(&msm_obj->node, &priv->objects);
-       mutex_unlock(&priv->obj_lock);
-
-       ret = drm_gem_create_mmap_offset(obj);
+       ret = msm_gem_init_bookkeeping(obj);
        if (ret)
                goto fail;
 
@@ -1284,7 +1287,6 @@ struct drm_gem_object *msm_gem_new(struct drm_device 
*dev, size_t size, uint32_t
 struct drm_gem_object *msm_gem_import(struct drm_device *dev,
                struct dma_buf *dmabuf, struct sg_table *sgt)
 {
-       struct msm_drm_private *priv = dev->dev_private;
        struct msm_gem_object *msm_obj;
        struct drm_gem_object *obj;
        size_t size, npages;
@@ -1313,13 +1315,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device 
*dev,
                goto fail;
        }
 
-       drm_gem_lru_move_tail(&priv->lru.pinned, obj);
-
-       mutex_lock(&priv->obj_lock);
-       list_add_tail(&msm_obj->node, &priv->objects);
-       mutex_unlock(&priv->obj_lock);
-
-       ret = drm_gem_create_mmap_offset(obj);
+       ret = msm_gem_init_bookkeeping(obj);
        if (ret)
                goto fail;
 
-- 
2.55.0

Reply via email to