[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: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH for-2.7 v3 19/36] char: free the tcp connection data when closing |
Date: |
Wed, 3 Aug 2016 11:40:01 -0400 (EDT) |
Hi
----- Original Message -----
>
>
> 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.
correct
>
> 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.
That makes sense, for the error case.
done
- [Qemu-devel] [PATCH for-2.7 v3 13/36] portio: keep references on portio, (continued)
- [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
- [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
- [Qemu-devel] [PATCH for-2.7 v3 27/36] virtio-input: free config list, marcandre . lureau, 2016/08/03