Message ID | 20200129112954.4282-1-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/i386/vmmouse: Fix crash when using the vmmouse on a machine without vmport | expand |
On Wed, Jan 29, 2020 at 12:29:54PM +0100, Thomas Huth wrote: >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 <thuth@redhat.com> Makes sense. Reviewed-by: Darren Kenny <darren.kenny@oracle.com> Thanks, Darren >--- > 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); >-- >2.18.1 > >
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 <thuth@redhat.com> > --- > 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
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);
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 <thuth@redhat.com> --- hw/i386/vmmouse.c | 6 ++++++ 1 file changed, 6 insertions(+)