accel/qaic: Drop the reference to BO in error path of create BO IOCTL
authorPranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
Fri, 8 Dec 2023 16:34:54 +0000 (09:34 -0700)
committerJeffrey Hugo <quic_jhugo@quicinc.com>
Fri, 15 Dec 2023 18:01:12 +0000 (11:01 -0700)
Do not free BO explicitly in error path, just drop its reference, cleanup
will be taken care by DRM as we have registered for ->free() callback.
This patch makes sure that there is only one code path for BO to be freed.

Signed-off-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
Reviewed-by: Carl Vanderlip <quic_carlv@quicinc.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231208163457.1295993-5-quic_jhugo@quicinc.com
drivers/accel/qaic/qaic_data.c

index 89ab8fa19315173f0ca370e58d438ae9f61f3373..7faa00705c1d5b1a2b39fd0f471513687c2901fe 100644 (file)
@@ -574,6 +574,9 @@ static void qaic_free_sgt(struct sg_table *sgt)
 {
        struct scatterlist *sg;
 
+       if (!sgt)
+               return;
+
        for (sg = sgt->sgl; sg; sg = sg_next(sg))
                if (sg_page(sg))
                        __free_pages(sg_page(sg), get_order(sg->length));
@@ -717,7 +720,7 @@ int qaic_create_bo_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
 
        ret = drm_gem_handle_create(file_priv, obj, &args->handle);
        if (ret)
-               goto free_sgt;
+               goto free_bo;
 
        bo->handle = args->handle;
        drm_gem_object_put(obj);
@@ -726,10 +729,8 @@ int qaic_create_bo_ioctl(struct drm_device *dev, void *data, struct drm_file *fi
 
        return 0;
 
-free_sgt:
-       qaic_free_sgt(bo->sgt);
 free_bo:
-       kfree(bo);
+       drm_gem_object_put(obj);
 unlock_dev_srcu:
        srcu_read_unlock(&qdev->dev_lock, qdev_rcu_id);
 unlock_usr_srcu: