Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@xxxxxxxxxxxxxxx> On 08.12.2023 17:34, Jeffrey Hugo wrote: > From: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@xxxxxxxxxxx> > > 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@xxxxxxxxxxx> > Reviewed-by: Carl Vanderlip <quic_carlv@xxxxxxxxxxx> > Reviewed-by: Jeffrey Hugo <quic_jhugo@xxxxxxxxxxx> > Signed-off-by: Jeffrey Hugo <quic_jhugo@xxxxxxxxxxx> > --- > drivers/accel/qaic/qaic_data.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/accel/qaic/qaic_data.c b/drivers/accel/qaic/qaic_data.c > index 89ab8fa19315..7faa00705c1d 100644 > --- a/drivers/accel/qaic/qaic_data.c > +++ b/drivers/accel/qaic/qaic_data.c > @@ -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: