From: Markus Armbruster <armbru@redhat.com>
To: Greg Kurz <groug@kaod.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
qemu-devel@nongnu.org,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] virtio-9p: print error message and exit instead of BUG_ON()
Date: Thu, 08 Sep 2016 09:14:05 +0200 [thread overview]
Message-ID: <87eg4uyibm.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <147326876478.8546.16045138068342092499.stgit@bahia.lan> (Greg Kurz's message of "Wed, 07 Sep 2016 19:19:24 +0200")
Greg Kurz <groug@kaod.org> writes:
> Calling assert() really makes sense when hitting a genuine bug, which calls
> for a fix in QEMU. However, when something goes wrong because the guest
> sends a malformed message, it is better to write down a more meaningul
> error message and exit.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/9pfs/virtio-9p-device.c | 20 ++++++++++++++++++--
> 1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
> index 009b43f6d045..67059182645a 100644
> --- a/hw/9pfs/virtio-9p-device.c
> +++ b/hw/9pfs/virtio-9p-device.c
> @@ -19,6 +19,7 @@
> #include "coth.h"
> #include "hw/virtio/virtio-access.h"
> #include "qemu/iov.h"
> +#include "qemu/error-report.h"
>
> void virtio_9p_push_and_notify(V9fsPDU *pdu)
> {
> @@ -35,6 +36,11 @@ void virtio_9p_push_and_notify(V9fsPDU *pdu)
> virtio_notify(VIRTIO_DEVICE(v), v->vq);
> }
>
> +static void virtio_9p_error(const char *msg)
> +{
> + error_report("The virtio-9p driver in the guest has an issue: %s", msg);
> +}
> +
> static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
> {
> V9fsVirtioState *v = (V9fsVirtioState *)vdev;
> @@ -56,13 +62,23 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
> break;
> }
>
> - BUG_ON(elem->out_num == 0 || elem->in_num == 0);
> + if (elem->out_num == 0) {
> + virtio_9p_error("missing VirtFS request's header");
> + exit(1);
> + }
Can the guest trigger this?
> + if (elem->in_num == 0) {
> + virtio_9p_error("missing VirtFS reply's header");
> + exit(1);
> + }
Same question.
> QEMU_BUILD_BUG_ON(sizeof out != 7);
>
> v->elems[pdu->idx] = elem;
> len = iov_to_buf(elem->out_sg, elem->out_num, 0,
> &out, sizeof out);
> - BUG_ON(len != sizeof out);
> + if (len != sizeof out) {
> + virtio_9p_error("malformed VirtFS request");
> + exit(1);
> + }
Same question.
>
> pdu->size = le32_to_cpu(out.size_le);
>
next prev parent reply other threads:[~2016-09-08 7:14 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-07 17:19 [Qemu-devel] [PATCH 0/2] virtio: error report fixes in 9P and PCI Greg Kurz
2016-09-07 17:19 ` [Qemu-devel] [PATCH 1/2] virtio-9p: print error message and exit instead of BUG_ON() Greg Kurz
2016-09-08 7:14 ` Markus Armbruster [this message]
2016-09-08 9:05 ` Greg Kurz
2016-09-08 8:59 ` Cornelia Huck
2016-09-08 9:12 ` Greg Kurz
2016-09-08 15:00 ` Michael S. Tsirkin
2016-09-08 15:04 ` Cornelia Huck
2016-09-08 15:19 ` Michael S. Tsirkin
2016-09-08 16:26 ` Greg Kurz
2016-09-08 16:55 ` Michael S. Tsirkin
2016-09-09 8:30 ` Cornelia Huck
2016-09-09 8:46 ` Greg Kurz
2016-09-09 8:53 ` Cornelia Huck
2016-09-09 9:26 ` Greg Kurz
2016-09-09 9:37 ` Greg Kurz
2016-09-09 6:38 ` Markus Armbruster
2016-09-09 7:30 ` Greg Kurz
2016-09-09 9:08 ` Markus Armbruster
2016-09-09 9:54 ` Greg Kurz
2016-09-07 17:19 ` [Qemu-devel] [PATCH 2/2] virtio-pci: error out when both legacy and modern modes are disabled Greg Kurz
2016-09-08 7:15 ` Markus Armbruster
2016-09-08 9:52 ` Greg Kurz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87eg4uyibm.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=groug@kaod.org \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.