[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.7 v3 19/36] char: free the tcp connection
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH for-2.7 v3 19/36] char: free the tcp connection data when closing |
Date: |
Wed, 3 Aug 2016 17:32:44 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 |
On 03/08/2016 16:55, address@hidden wrote:
> @@ -2851,11 +2851,6 @@ static void tcp_chr_disconnect(CharDriverState *chr)
> return;
> }
>
> - s->connected = 0;
> - if (s->listen_ioc) {
> - s->listen_tag = qio_channel_add_watch(
> - QIO_CHANNEL(s->listen_ioc), G_IO_IN, tcp_chr_accept, chr, NULL);
> - }
> tcp_set_msgfds(chr, NULL, 0);
> remove_fd_in_watch(chr);
> object_unref(OBJECT(s->sioc));
> @@ -2863,6 +2858,24 @@ static void tcp_chr_disconnect(CharDriverState *chr)
> object_unref(OBJECT(s->ioc));
> s->ioc = NULL;
> g_free(chr->filename);
> + chr->filename = NULL;
> + s->connected = 0;
> +}
> +
> +static void tcp_chr_disconnect(CharDriverState *chr)
> +{
> + TCPCharDriver *s = chr->opaque;
> +
> + if (!s->connected) {
> + return;
> + }
> +
> + tcp_chr_free_connection(chr);
> +
> + if (s->listen_ioc) {
> + s->listen_tag = qio_channel_add_watch(
> + QIO_CHANNEL(s->listen_ioc), G_IO_IN, tcp_chr_accept, chr, NULL);
> + }
I think
if (s->read_msgfds_num) {
for (i = 0; i < s->read_msgfds_num; i++) {
close(s->read_msgfds[i]);
}
g_free(s->read_msgfds);
}
should be moved from tcp_chr_close to tcp_chr_free_connection. The
following parts of tcp_chr_close instead are now duplicate, and can be
removed:
remove_fd_in_watch(chr);
if (s->ioc) {
object_unref(OBJECT(s->ioc));
}
if (s->write_msgfds_num) {
g_free(s->write_msgfds);
}
are now duplicate and can be removed.
Finally, since you're at it, here in tcp_set_msgfds:
/* clear old pending fd array */
g_free(s->write_msgfds);
s->write_msgfds = NULL;
it's best to add a s->write_msgfds_num = 0.
Thanks,
Paolo
- [Qemu-devel] [PATCH for-2.7 v3 12/36] tests: fix leak in test-string-input-visitor, (continued)
- [Qemu-devel] [PATCH for-2.7 v3 12/36] tests: fix leak in test-string-input-visitor, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 13/36] portio: keep references on portio, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 14/36] numa: do not leak NumaOptions, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 15/36] pc: simplify passing qemu_irq, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 20/36] char: free MuxDriver when closing, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 21/36] tests: fix qom-test leaks, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 18/36] acpi-build: fix array leak, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 22/36] pc: free i8259, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 16/36] pc: don't leak a20_line, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 19/36] char: free the tcp connection data when closing, marcandre . lureau, 2016/08/03
- Re: [Qemu-devel] [PATCH for-2.7 v3 19/36] char: free the tcp connection data when closing,
Paolo Bonzini <=
- [Qemu-devel] [PATCH for-2.7 v3 17/36] machine: use class base init generated name, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 23/36] pc: keep gsi reference, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 24/36] ahci: free irqs array, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 25/36] sd: free timer, marcandre . lureau, 2016/08/03
- [Qemu-devel] [PATCH for-2.7 v3 26/36] qjson: free str, marcandre . lureau, 2016/08/03