summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Christophe Dubois2015-08-13 12:26:22 +0200
committerPeter Maydell2015-08-13 12:26:22 +0200
commitf7a6785e12d834d05200b0595070db453344b25d (patch)
tree07cdae6f448514ba854aa34e5f774b03a00e78b7
parenthw/cpu/a15mpcore: Wire up hyp and secure physical timer interrupts (diff)
downloadqemu-f7a6785e12d834d05200b0595070db453344b25d.tar.gz
qemu-f7a6785e12d834d05200b0595070db453344b25d.tar.xz
qemu-f7a6785e12d834d05200b0595070db453344b25d.zip
i.MX: Fix UART driver to work with unitialized "chardev" device
The "chardev" property initialization might have failed (for example because there are not enough chardevs provided by QEMU). The serial device emulator needs to be able to work with an uninitialized (NULL) chardev device pointer. This patch adds some missing tests on the chr pointer value before using it. Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Message-id: 1438342461-18967-1-git-send-email-jcd@tribudubois.net Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--hw/char/imx_serial.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c
index f9da59fd63..801156db2d 100644
--- a/hw/char/imx_serial.c
+++ b/hw/char/imx_serial.c
@@ -125,7 +125,9 @@ static uint64_t imx_serial_read(void *opaque, hwaddr offset,
s->usr2 &= ~USR2_RDR;
s->uts1 |= UTS1_RXEMPTY;
imx_update(s);
- qemu_chr_accept_input(s->chr);
+ if (s->chr) {
+ qemu_chr_accept_input(s->chr);
+ }
}
return c;
@@ -212,7 +214,9 @@ static void imx_serial_write(void *opaque, hwaddr offset,
}
if (value & UCR2_RXEN) {
if (!(s->ucr2 & UCR2_RXEN)) {
- qemu_chr_accept_input(s->chr);
+ if (s->chr) {
+ qemu_chr_accept_input(s->chr);
+ }
}
}
s->ucr2 = value & 0xffff;