summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmit Shah <amit.shah@redhat.com>2011-12-02 15:42:55 +0530
committerHans de Goede <hdegoede@redhat.com>2012-11-01 16:39:57 +0100
commit837d14b81e49fca51b8274d6e885ca3079dc1a23 (patch)
treea93ee028e4d67589b0c74c6ae33baf1c10e2e3f4
parent724297e684db6ea307644608596112b48f7dfe32 (diff)
char: Disable write callback if throttled chardev is detached
If a throttled chardev is detached from the frontend device, all future callbacks should be suppressed. Not doing this results in a segfault. Bugzilla: 745758 Upstream: Not applicable, since throttling is a RHEL6-only feature. Signed-off-by: Amit Shah <amit.shah@redhat.com>
-rw-r--r--qemu-char.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/qemu-char.c b/qemu-char.c
index 1cc36c57b..8c09d0aef 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -224,6 +224,11 @@ void qemu_chr_add_handlers(CharDriverState *s,
++s->avail_connections;
}
if (!handlers) {
+ if (s->write_blocked) {
+ /* Ensure we disable the callback if we were throttled */
+ s->chr_disable_write_fd_handler(s);
+ /* s->write_blocked is cleared below */
+ }
handlers = &null_handlers;
}
s->chr_can_read = handlers->fd_can_read;