[Nouveau] [PATCH] drm/nouveau/dispnv50: cleanup on nv50_head_atom_get failure
Simon Ser
contact at emersion.fr
Thu Jan 14 21:44:06 UTC 2021
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 at emersion.fr>
Cc: Ben Skeggs <bskeggs at redhat.com>
Cc: Lyude Paul <lyude at redhat.com>
Cc: Ilia Mirkin <imirkin at alum.mit.edu>
---
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
More information about the Nouveau
mailing list