From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: amit.shah@redhat.com, aliguori@us.ibm.com
Subject: [Qemu-devel] [PATCH] qemu-char: another io_add_watch_poll fix
Date: Wed, 10 Apr 2013 15:23:27 +0200 [thread overview]
Message-ID: <1365600207-21685-1-git-send-email-pbonzini@redhat.com> (raw)
After attaching the source, we have to remove the reference we hold
to it, because we do not hold anymore a pointer to the source.
If we do not do this, removing the source will not finalize it and
will not drop the "real" I/O watch source.
This showed up when backporting the new flow control patches to older
versions of QEMU that still used select. The whole select then failed
with EBADF (poll instead will reporting POLLNVAL on a single pollfd)
and QEMU froze.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
qemu-char.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/qemu-char.c b/qemu-char.c
index 37117b5..2caef56 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -610,6 +610,7 @@ static guint io_add_watch_poll(GIOChannel *channel,
gpointer user_data)
{
IOWatchPoll *iwp;
+ int tag;
iwp = (IOWatchPoll *) g_source_new(&io_watch_poll_funcs, sizeof(IOWatchPoll));
iwp->fd_can_read = fd_can_read;
@@ -618,7 +619,9 @@ static guint io_add_watch_poll(GIOChannel *channel,
iwp->fd_read = (GSourceFunc) fd_read;
iwp->src = NULL;
- return g_source_attach(&iwp->parent, NULL);
+ tag = g_source_attach(&iwp->parent, NULL);
+ g_source_unref(&iwp->parent);
+ return tag;
}
static GIOChannel *io_channel_from_fd(int fd)
--
1.8.1.4
next reply other threads:[~2013-04-10 13:23 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-10 13:23 Paolo Bonzini [this message]
2013-04-10 17:59 ` [Qemu-devel] [PATCH] qemu-char: another io_add_watch_poll fix Amit Shah
2013-04-11 8:58 ` Paolo Bonzini
2013-04-12 9:24 ` Amit Shah
2013-04-12 10:31 ` Paolo Bonzini
2013-04-15 21:10 ` Anthony Liguori
2013-04-16 9:15 ` Gerd Hoffmann
2013-04-16 9:34 ` Paolo Bonzini
2013-04-17 15:36 ` Hans de Goede
2013-04-17 16:54 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1365600207-21685-1-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=amit.shah@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).