From: Stefan Hajnoczi <stefanha@gmail.com>
To: David Marchand <david.marchand@6wind.com>
Cc: kvm@vger.kernel.org, claudio.fontana@huawei.com,
qemu-devel@nongnu.org, armbru@redhat.com,
arei.gonglei@huawei.com, mkletzan@redhat.com,
pbonzini@redhat.com, jani.kokkonen@huawei.com,
cam@cs.ualberta.ca
Subject: Re: [Qemu-devel] [PATCH v5 3/3] ivshmem: add check on protocol version in QEMU
Date: Fri, 5 Sep 2014 11:29:08 +0100 [thread overview]
Message-ID: <20140905102908.GA27649@stefanha-thinkpad.redhat.com> (raw)
In-Reply-To: <1409835061-19989-4-git-send-email-david.marchand@6wind.com>
[-- Attachment #1: Type: text/plain, Size: 2190 bytes --]
On Thu, Sep 04, 2014 at 02:51:01PM +0200, David Marchand wrote:
> diff --git a/contrib/ivshmem-client/ivshmem-client.c b/contrib/ivshmem-client/ivshmem-client.c
> index ad210c8..0c4e016 100644
> --- a/contrib/ivshmem-client/ivshmem-client.c
> +++ b/contrib/ivshmem-client/ivshmem-client.c
> @@ -184,10 +184,18 @@ ivshmem_client_connect(IvshmemClient *client)
> goto err_close;
> }
>
> - /* first, we expect our index + a fd == -1 */
> + /* first, we expect a protocol version */
> + if (read_one_msg(client, &tmp, &fd) < 0 ||
> + (tmp != IVSHMEM_PROTOCOL_VERSION) || fd != -1) {
> + debug_log(client, "cannot read from server\n");
> + goto err_close;
> + }
> + debug_log(client, "our_id=%ld\n", client->local.id);
This debug_log() is probably not intentional. local.id will always be
-1 here so the output is not useful.
> +static void ivshmem_check_version(void *opaque, const uint8_t * buf, int flags)
> +{
> + IVShmemState *s = opaque;
> + PCIDevice *dev = PCI_DEVICE(s);
> + int tmp;
> + long version;
> +
> + memcpy(&version, buf, sizeof(long));
> + tmp = qemu_chr_fe_get_msgfd(s->server_chr);
> + if (tmp != -1 || version != IVSHMEM_PROTOCOL_VERSION) {
> + fprintf(stderr, "incompatible version, you are connecting to a ivhsmem-"
> + "server using a different protocol please check your setup\n");
> + qemu_chr_delete(s->server_chr);
> + s->server_chr = NULL;
> + return;
> + }
> +
> + IVSHMEM_DPRINTF("version check ok, finish init and switch to real chardev "
> + "handler\n");
> +
> + pci_register_bar(dev, 2, s->ivshmem_attr, &s->bar);
Not sure if it is okay to delay PCI initialization to a fd hander
callback.
If the version message is too slow the guest could see the PCI adapter
without the BAR!
Did you move this code in order to prevent the guest from accessing the
device before it has connected to the server? Perhaps the device needs
a state field that tracks whether or not it is ready for operation. Any
access before RUNNING state is reached will be ignored (?).
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
next prev parent reply other threads:[~2014-09-05 10:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-04 12:50 [Qemu-devel] [PATCH v5 0/3] ivshmem: update documentation, add client/server tools David Marchand
2014-09-04 12:50 ` [Qemu-devel] [PATCH v5 1/3] contrib: add ivshmem client and server David Marchand
2014-09-04 15:56 ` Michael S. Tsirkin
2014-09-05 8:52 ` Claudio Fontana
2014-09-05 12:07 ` David Marchand
2014-09-07 5:58 ` Michael S. Tsirkin
2014-09-04 15:58 ` Michael S. Tsirkin
2014-09-05 10:40 ` Stefan Hajnoczi
2014-09-04 12:51 ` [Qemu-devel] [PATCH v5 2/3] docs: update ivshmem device spec David Marchand
2014-09-05 10:30 ` Stefan Hajnoczi
2014-09-04 12:51 ` [Qemu-devel] [PATCH v5 3/3] ivshmem: add check on protocol version in QEMU David Marchand
2014-09-05 10:29 ` Stefan Hajnoczi [this message]
2014-09-05 12:25 ` David Marchand
2014-09-08 8:30 ` Stefan Hajnoczi
2014-09-04 15:40 ` [Qemu-devel] [PATCH v5 0/3] ivshmem: update documentation, add client/server tools Michael S. Tsirkin
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=20140905102908.GA27649@stefanha-thinkpad.redhat.com \
--to=stefanha@gmail.com \
--cc=arei.gonglei@huawei.com \
--cc=armbru@redhat.com \
--cc=cam@cs.ualberta.ca \
--cc=claudio.fontana@huawei.com \
--cc=david.marchand@6wind.com \
--cc=jani.kokkonen@huawei.com \
--cc=kvm@vger.kernel.org \
--cc=mkletzan@redhat.com \
--cc=pbonzini@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).