Mesa (master): st/mesa: remove redundant stfb->iface checks

Nicolai Hähnle nh at kemper.freedesktop.org
Fri Apr 28 09:34:12 UTC 2017


Module: Mesa
Branch: master
Commit: 9d346af322e3f9d6d52e00759e8c3cd37c192004
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9d346af322e3f9d6d52e00759e8c3cd37c192004

Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
Date:   Fri Apr 21 15:11:34 2017 +0200

st/mesa: remove redundant stfb->iface checks

stfb->iface is always non-NULL for an st_framebuffer. These checks
were incorrect, relying on out-of-bounds memory access in the
surface-less case of EGL_KHR_surfaceless_context.

v2: remove redundant stread check (Marek)

Reviewed-by: Marek Olšák <marek at olsak@amd.com> (v2)

---

 src/mesa/state_tracker/st_cb_viewport.c | 4 ++--
 src/mesa/state_tracker/st_manager.c     | 7 -------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_viewport.c b/src/mesa/state_tracker/st_cb_viewport.c
index ff18fd0e6a..8b50350fab 100644
--- a/src/mesa/state_tracker/st_cb_viewport.c
+++ b/src/mesa/state_tracker/st_cb_viewport.c
@@ -54,9 +54,9 @@ static void st_viewport(struct gl_context *ctx)
    stdraw = st_ws_framebuffer(st->ctx->DrawBuffer);
    stread = st_ws_framebuffer(st->ctx->ReadBuffer);
 
-   if (stdraw && stdraw->iface)
+   if (stdraw)
       stdraw->iface_stamp = p_atomic_read(&stdraw->iface->stamp) - 1;
-   if (stread && stread != stdraw && stread->iface)
+   if (stread && stread != stdraw)
       stread->iface_stamp = p_atomic_read(&stread->iface->stamp) - 1;
 }
 
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index 2ba7de6c63..90e4177f69 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -176,10 +176,6 @@ st_framebuffer_validate(struct st_framebuffer *stfb,
    boolean changed = FALSE;
    int32_t new_stamp;
 
-   /* Check for incomplete framebuffers (e.g. EGL_KHR_surfaceless_context) */
-   if (!stfb->iface)
-      return;
-
    new_stamp = p_atomic_read(&stfb->iface->stamp);
    if (stfb->iface_stamp == new_stamp)
       return;
@@ -281,9 +277,6 @@ st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb,
    enum pipe_format format;
    boolean sw;
 
-   if (!stfb->iface)
-      return FALSE;
-
    assert(_mesa_is_winsys_fbo(&stfb->Base));
 
    /* do not distinguish depth/stencil buffers */




More information about the mesa-commit mailing list