Le 29/01/2020 à 12:29, Thomas Huth a écrit : > QEMU currently crashes when the user tries to use the "vmmouse" on a > machine without vmport, e.g.: > > $ x86_64-softmmu/qemu-system-x86_64 -machine microvm -device vmmouse > Segmentation fault (core dumped) > > or: > > $ x86_64-softmmu/qemu-system-x86_64 -device vmmouse -M pc,vmport=off > Segmentation fault (core dumped) > > Let's avoid the crash by checking for the vmport device first. > > Signed-off-by: Thomas Huth <[email protected]> > --- > hw/i386/vmmouse.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c > index 7c2a375527..e8e62bd96b 100644 > --- a/hw/i386/vmmouse.c > +++ b/hw/i386/vmmouse.c > @@ -23,6 +23,7 @@ > */ > > #include "qemu/osdep.h" > +#include "qapi/error.h" > #include "ui/console.h" > #include "hw/i386/pc.h" > #include "hw/input/i8042.h" > @@ -269,6 +270,11 @@ static void vmmouse_realizefn(DeviceState *dev, Error > **errp) > > DPRINTF("vmmouse_init\n"); > > + if (!object_resolve_path_type("", TYPE_VMPORT, NULL)) { > + error_setg(errp, "vmmouse needs a machine with vmport"); > + return; > + } > + > vmport_register(VMMOUSE_STATUS, vmmouse_ioport_read, s); > vmport_register(VMMOUSE_COMMAND, vmmouse_ioport_read, s); > vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s); >
Applied to my trivial-patches branch. Thanks, Laurent
