[PATCH] drm/nouveau/dispnv50: cleanup on nv50_head_atom_get failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]<

 



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



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux