Re: [PATCH] worker: do not leak cursor after disconnecting clients

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

 



On Tue, 2016-01-26 at 10:52 +0000, Frediano Ziglio wrote:
> Calling cursor_channel_disconnect does not free cursor_display
> so this causes a leak.
> Is the only code where this pointer is reset preventing any
> further cursor channel connection. If a client is lazy reading
> cursor data during the flush connection is closed and further clients
> won't be able to use the cursor.
> This also prevents future use of a NULL pointer.
> 
> Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
> ---
>  server/red-worker.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> Changes from v2:
> - comment log expanded.
> 
> diff --git a/server/red-worker.c b/server/red-worker.c
> index b8826c5..0ca715a 100644
> --- a/server/red-worker.c
> +++ b/server/red-worker.c
> @@ -453,7 +453,6 @@ static void flush_cursor_commands(RedWorker *worker)
>              if (spice_get_monotonic_time_ns() >= end_time) {
>                  spice_warning("flush cursor timeout");
>                  cursor_channel_disconnect(worker->cursor_channel);
> -                worker->cursor_channel = NULL;
>              } else {
>                  sleep_count++;
>                  usleep(DISPLAY_CLIENT_RETRY_INTERVAL);


Curious.  The equivalent code that deals with the display channel is:

            if (spice_get_monotonic_time_ns() >= end_time) {
                spice_warning("update timeout");
                red_disconnect_all_display_TODO_remove_me(red_channel);
            } else {
                sleep_count++;
                usleep(DISPLAY_CLIENT_RETRY_INTERVAL);
            }

_TODO_remove_me()...

Anyway, Frediano's patch looks correct.

Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx>
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[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]     [Monitors]