[RFC PATCH xserver v2] xwayland: Monitor client states to destroy callbacks
Michel Dänzer
michel at daenzer.net
Wed Mar 8 02:18:37 UTC 2017
On 07/03/17 08:08 PM, Olivier Fourdan wrote:
> Client resources can survive the client itself, in which case we
> may end up in our sync callback trying to access client's data after
> it's been freed/reclaimed.
>
> Add a ClientStateCallback handler to monitor the client state changes
> and clear the sync callback set up by the glamor drm code if any.
>
> Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
> ---
> v2: [facepalm] forgot to use the state->callback
>
> hw/xwayland/xwayland-glamor.c | 52 ++++++++++++++++++++++++++++++++++++++-----
> 1 file changed, 47 insertions(+), 5 deletions(-)
>
> diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
> index 65c3c00..9c4297e 100644
> --- a/hw/xwayland/xwayland-glamor.c
> +++ b/hw/xwayland/xwayland-glamor.c
> @@ -38,6 +38,9 @@
> #include <dri3.h>
> #include "drm-client-protocol.h"
>
> +static DevPrivateKeyRec xwlGlamorPrivateKeyRec;
> +#define xwlGlamorPrivateKey (&xwlGlamorPrivateKeyRec)
"xwlGlamorPrivateKey" seems a bit generic — this key can't be used for
non-client privates at the same time, can it?
> @@ -441,8 +473,7 @@ sync_callback(void *data, struct wl_callback *callback, uint32_t serial)
> dri3_send_open_reply(client, state->fd);
> AttendClient(client);
> }
sync_callback should no longer need to check client->clientGone.
> - free(state);
> - wl_callback_destroy(callback);
> + free_xwl_auth_state (client, state);
> }
Space between function name and opening parens doesn't match coding
style, though there does seem to be some precedent in hw/xwayland.
(There's another instance of this in the patch)
Other than these, looks good to me.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the xorg-devel
mailing list