From 18af247ab28f3d4bf199c57f7c9b314df6dde501 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Fri, 5 May 2017 10:52:05 -0500 Subject: [PATCH] ecore_drm2: Add checks for using a plane after death We keep planes on the plane list to ensure a released plane is removed from display - however this means that if a caller starts messing with a plane after release, that it could potentially reposition a plane it doesn't own anymore. Use EINA_SAFETY macros to prevent this. --- src/lib/ecore_drm2/ecore_drm2_plane.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lib/ecore_drm2/ecore_drm2_plane.c b/src/lib/ecore_drm2/ecore_drm2_plane.c index 52f6bfd1d8..e90a740073 100644 --- a/src/lib/ecore_drm2/ecore_drm2_plane.c +++ b/src/lib/ecore_drm2/ecore_drm2_plane.c @@ -129,6 +129,7 @@ EAPI void ecore_drm2_plane_release(Ecore_Drm2_Plane *plane) { EINA_SAFETY_ON_NULL_RETURN(plane); + EINA_SAFETY_ON_TRUE_RETURN(plane->dead); plane->dead = EINA_TRUE; plane->state->in_use = EINA_FALSE; @@ -139,6 +140,7 @@ EAPI void ecore_drm2_plane_destination_set(Ecore_Drm2_Plane *plane, int x, int y, int w, int h) { EINA_SAFETY_ON_NULL_RETURN(plane); + EINA_SAFETY_ON_TRUE_RETURN(plane->dead); plane->state->cx.value = x; plane->state->cy.value = y; @@ -155,6 +157,7 @@ ecore_drm2_plane_fb_set(Ecore_Drm2_Plane *plane, Ecore_Drm2_Fb *fb) EINA_SAFETY_ON_NULL_RETURN_VAL(plane, EINA_FALSE); EINA_SAFETY_ON_NULL_RETURN_VAL(fb, EINA_FALSE); + EINA_SAFETY_ON_TRUE_RETURN_VAL(plane->dead, EINA_FALSE); fallback_id = plane->state->fid.value; plane->state->fid.value = fb->id;