When nv50_head_atom_get fails, we need to un-do everything we've done so far: release the fence and unpin the BO. Signed-off-by: Simon Ser <contact@xxxxxxxxxxx> Cc: Ben Skeggs <bskeggs@xxxxxxxxxx> Cc: Lyude Paul <lyude@xxxxxxxxxx> Cc: Ilia Mirkin <imirkin@xxxxxxxxxxxx> --- drivers/gpu/drm/nouveau/dispnv50/wndw.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c index 0356474ad6f6..60aabb1bc095 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c +++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c @@ -562,8 +562,12 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state) if (wndw->func->prepare) { asyh = nv50_head_atom_get(asyw->state.state, asyw->state.crtc); - if (IS_ERR(asyh)) + if (IS_ERR(asyh)) { + dma_fence_put(asyw->state.fence); + asyw->state.fence = NULL; + nouveau_bo_unpin(nvbo); return PTR_ERR(asyh); + } wndw->func->prepare(wndw, asyh, asyw); } -- 2.30.0 _______________________________________________ Nouveau mailing list Nouveau@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/nouveau