On Tue, Nov 16, 2021 at 8:37 AM Daniel Vetter <daniel@xxxxxxxx> wrote: > > On Tue, Nov 16, 2021 at 10:25:19AM +0100, Christian König wrote: > > We need to grab another ref before trying to add the fence to the sched > > job and not after. > > > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> > > Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > > I wondered first why this goes boom, but then I realized that in some > cases add_dependency() drops the reference of the passed-in fence. > > Please also add the Fixes: line like in the previous patch. oh, I sent https://patchwork.freedesktop.org/patch/463329/ before I saw this.. it already has the fixes tag, and IMO a better description, so I think you can just pick that one instead BR, -R > Cheers, Daniel > > > --- > > drivers/gpu/drm/scheduler/sched_main.c | 10 ++++++---- > > 1 file changed, 6 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c > > index 94fe51b3caa2..400d201c3c28 100644 > > --- a/drivers/gpu/drm/scheduler/sched_main.c > > +++ b/drivers/gpu/drm/scheduler/sched_main.c > > @@ -704,12 +704,14 @@ int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job, > > int ret; > > > > dma_resv_for_each_fence(&cursor, obj->resv, write, fence) { > > - ret = drm_sched_job_add_dependency(job, fence); > > - if (ret) > > - return ret; > > - > > /* Make sure to grab an additional ref on the added fence */ > > dma_fence_get(fence); > > + > > + ret = drm_sched_job_add_dependency(job, fence); > > + if (ret) { > > + dma_fence_put(fence); > > + return ret; > > + } > > } > > return 0; > > } > > -- > > 2.25.1 > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch