From: Amit Shah Date: Wed, 21 Dec 2011 06:58:27 +0000 (+0530) Subject: virtio-console: Check if chardev backends available before calling into them X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=6640422c172e01d0e191a754d3643a68abca83bc;p=qemu.git virtio-console: Check if chardev backends available before calling into them For the callback functions invoked by the virtio-serial-bus code, check if we have chardev backends registered before we call into the chardev functions. Signed-off-by: Amit Shah Reported-by: Anthony Liguori Signed-off-by: Amit Shah Signed-off-by: Anthony Liguori --- 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); }