diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2011-11-13 17:18:59 +0000 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2011-11-18 14:22:46 +0100 |
commit | 57285302af51a8bae334c03e1f8243e935373953 (patch) | |
tree | 112a22bec76cc4ffe6725241f73b7d22a01a7fc5 | |
parent | 5435352ce6abfb8a7540ae7d47e981d329120cca (diff) |
pseries: Check we have a chardev in spapr_vty_init()
If qemu is run like:
qemu-system-ppc64 -nodefaults -device spapr-vty
We end up in spapr_vty_init() with dev->chardev == NULL. Currently
that leads to a segfault because we unconditionally call
qemu_chr_add_handlers().
Although we could make that call conditional, I think a spapr-vty
without a chardev is basically useless so fail the init. This is
similar to what the serial code does for example.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r-- | hw/spapr_vty.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/spapr_vty.c b/hw/spapr_vty.c index a9d4b035e2..f4f3ee32ae 100644 --- a/hw/spapr_vty.c +++ b/hw/spapr_vty.c @@ -58,6 +58,11 @@ static int spapr_vty_init(VIOsPAPRDevice *sdev) { VIOsPAPRVTYDevice *dev = (VIOsPAPRVTYDevice *)sdev; + if (!dev->chardev) { + fprintf(stderr, "spapr-vty: Can't create vty without a chardev!\n"); + exit(1); + } + qemu_chr_add_handlers(dev->chardev, vty_can_receive, vty_receive, NULL, dev); |