On Mon, Jun 16, 2025 at 03:07:23PM +0200, Christian König wrote: > Unlocking the resv object was missing in the error path, additionally to > that we should move over the resource only after the fence slot was > reserved. > > Signed-off-by: Christian König <[email protected]>
Fixes tag? You probably can merge this one by itself ahead of the rest of the series. With that: Reviewed-by: Matthew Brost <[email protected]> > --- > drivers/gpu/drm/ttm/ttm_bo_util.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c > b/drivers/gpu/drm/ttm/ttm_bo_util.c > index b78365dc1fed..56f3152f34f5 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo_util.c > +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c > @@ -256,6 +256,13 @@ static int ttm_buffer_object_transfer(struct > ttm_buffer_object *bo, > ret = dma_resv_trylock(&fbo->base.base._resv); > WARN_ON(!ret); > > + ret = dma_resv_reserve_fences(&fbo->base.base._resv, 1); > + if (ret) { > + dma_resv_unlock(&fbo->base.base._resv); > + kfree(fbo); > + return ret; > + } > + > if (fbo->base.resource) { > ttm_resource_set_bo(fbo->base.resource, &fbo->base); > bo->resource = NULL; > @@ -264,12 +271,6 @@ static int ttm_buffer_object_transfer(struct > ttm_buffer_object *bo, > fbo->base.bulk_move = NULL; > } > > - ret = dma_resv_reserve_fences(&fbo->base.base._resv, 1); > - if (ret) { > - kfree(fbo); > - return ret; > - } > - > ttm_bo_get(bo); > fbo->bo = bo; > > -- > 2.34.1 >
