hw/pl011.c: Avoid crash on read when no chr backend present
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 20 Jul 2012 12:34:49 +0000 (13:34 +0100)
committerPeter Maydell <petmay01@cam-vm-266.(none)>
Fri, 20 Jul 2012 12:34:49 +0000 (13:34 +0100)
Add a missing guard that meant we would segfault if the guest read
UARTDR on a PL011 serial device which had no chr backend connected.
(This didn't happen for Linux guests because Linux reads the flags
register and doesn't try to read the UART if it's empty.)

Reported-by: Christian Müller <christian.mueller@heig-vd.ch>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/pl011.c

index 8a5a8f554a58881511fc55159639567934e049fd..3245702df0bc35e1946df394e8949adfee2ee38e 100644 (file)
@@ -78,7 +78,9 @@ static uint64_t pl011_read(void *opaque, target_phys_addr_t offset,
         if (s->read_count == s->read_trigger - 1)
             s->int_level &= ~ PL011_INT_RX;
         pl011_update(s);
-        qemu_chr_accept_input(s->chr);
+        if (s->chr) {
+            qemu_chr_accept_input(s->chr);
+        }
         return c;
     case 1: /* UARTCR */
         return 0;