xserver: Branch 'master'

Adam Jackson ajax at kemper.freedesktop.org
Mon Mar 6 23:39:14 UTC 2017


 hw/xwayland/xwayland-glamor.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

New commits:
commit 64ca14b85e45b13628396f21d1903e311f92a9e1
Author: Olivier Fourdan <ofourdan at redhat.com>
Date:   Thu Mar 2 10:19:26 2017 +0100

    xwayland: make sure client is not gone in sync callback
    
    in XWayland, dri3_send_open_reply() is called from a sync callback, so
    there is a possibility that the client might be gone when we get to the
    callback eventually, which leads to a crash in _XSERVTransSendFd() from
    WriteFdToClient() .
    
    Check if clientGone has been set in the sync callback handler to avoid
    this.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99149
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100040
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1416553
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
    Tested-by: Mark B <mark.blakeney at bullet-systems.net>

diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
index b3d0aab..65c3c00 100644
--- a/hw/xwayland/xwayland-glamor.c
+++ b/hw/xwayland/xwayland-glamor.c
@@ -435,9 +435,12 @@ static void
 sync_callback(void *data, struct wl_callback *callback, uint32_t serial)
 {
     struct xwl_auth_state *state = data;
+    ClientPtr client = state->client;
 
-    dri3_send_open_reply(state->client, state->fd);
-    AttendClient(state->client);
+    if (!client->clientGone) {
+        dri3_send_open_reply(client, state->fd);
+        AttendClient(client);
+    }
     free(state);
     wl_callback_destroy(callback);
 }


More information about the xorg-commit mailing list