summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
Diffstat (limited to 'hw')
-rw-r--r--hw/virtio-console.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/hw/virtio-console.c b/hw/virtio-console.c
index d3351c83ff..dbbea76dfb 100644
--- a/hw/virtio-console.c
+++ b/hw/virtio-console.c
@@ -27,6 +27,11 @@ static ssize_t flush_buf(VirtIOSerialPort *port, const uint8_t *buf, size_t len)
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
ssize_t ret;
+ if (!vcon->chr) {
+ /* If there's no backend, we can just say we consumed all data. */
+ return len;
+ }
+
ret = qemu_chr_fe_write(vcon->chr, buf, len);
trace_virtio_console_flush_buf(port->id, len, ret);
@@ -52,6 +57,9 @@ static void guest_open(VirtIOSerialPort *port)
{
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
+ if (!vcon->chr) {
+ return;
+ }
qemu_chr_fe_open(vcon->chr);
}
@@ -60,6 +68,9 @@ static void guest_close(VirtIOSerialPort *port)
{
VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port);
+ if (!vcon->chr) {
+ return;
+ }
qemu_chr_fe_close(vcon->chr);
}