From: "Michael S. Tsirkin" <mst@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Cindy Lu <lulu@redhat.com>,
jasowang@redhat.com, qemu-devel@nongnu.org,
qemu-stable@nongnu.org
Subject: Re: [PATCH] virtio-pci: Fix the failure process in kvm_virtio_pci_vector_use_one()
Date: Tue, 16 Apr 2024 14:38:18 -0400 [thread overview]
Message-ID: <20240416143608-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <CAFEAcA-bXhCqTCiT5NshAzDb17c8+jqdmtOigfSbJ5ozckAUQg@mail.gmail.com>
On Tue, Apr 16, 2024 at 02:14:57PM +0100, Peter Maydell wrote:
> On Tue, 16 Apr 2024 at 13:41, Cindy Lu <lulu@redhat.com> wrote:
> >
> > On Tue, Apr 16, 2024 at 8:30 PM Peter Maydell <peter.maydell@linaro.org> wrote:
> > >
> > > On Tue, 16 Apr 2024 at 13:29, Cindy Lu <lulu@redhat.com> wrote:
> > > >
> > > > In function kvm_virtio_pci_vector_use_one(), in the undo label,
> > > > the function will get the vector incorrectly while using
> > > > VIRTIO_CONFIG_IRQ_IDX
> > > > To fix this, we remove this label and simplify the failure process
And then what happens? It's unclear whether it's a real or
theoretical issue.
> > > > Fixes: f9a09ca3ea ("vhost: add support for configure interrupt")
> > > > Cc: qemu-stable@nongnu.org
> > > > Signed-off-by: Cindy Lu <lulu@redhat.com>
> > > > ---
> > > > hw/virtio/virtio-pci.c | 19 +++----------------
> > > > 1 file changed, 3 insertions(+), 16 deletions(-)
> > > >
> > > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> > > > index b138fa127a..565bdb0897 100644
> > > > --- a/hw/virtio/virtio-pci.c
> > > > +++ b/hw/virtio/virtio-pci.c
> > > > @@ -892,7 +892,7 @@ static int kvm_virtio_pci_vector_use_one(VirtIOPCIProxy *proxy, int queue_no)
> > > > }
> > > > ret = kvm_virtio_pci_vq_vector_use(proxy, vector);
> > > > if (ret < 0) {
> > > > - goto undo;
> > > > + return ret;
> > > > }
> > > > /*
> > > > * If guest supports masking, set up irqfd now.
> > > > @@ -902,25 +902,12 @@ static int kvm_virtio_pci_vector_use_one(VirtIOPCIProxy *proxy, int queue_no)
> > > > ret = kvm_virtio_pci_irqfd_use(proxy, n, vector);
> > > > if (ret < 0) {
> > > > kvm_virtio_pci_vq_vector_release(proxy, vector);
> > > > - goto undo;
> > > > + kvm_virtio_pci_irqfd_release(proxy, n, vector);
> > >
> > > Are you sure this is right? The kvm_virtio_pci_irqfd_use()
> > > just failed, so why do we need to call
> > > kvm_virtio_pci_irqfd_release() ?
>
> > This version should be correct. when kvm_virtio_pci_irqfd_use() fail
> > we need to call kvm_virtio_pci_vq_vector_release() and
> > kvm_virtio_pci_irqfd_release()
> > but for kvm_virtio_pci_vq_vector_use fail we can simple return,
>
> But *why* do we need to call kvm_virtio_pci_irqfd_release()?
>
> In most API designs, this kind of pairing of "get/use/allocate
> something" and "free/release something" function only
> requires you to do the "release" if the "get" succeeded,
> because if the "get" fails it's supposed to fail in way that
> means "I didn't do anything". Is this API not following that
> standard pattern ?
I am just as puzzled.
> > in old version there is a error in failure process.
> > while the kvm_virtio_pci_vq_vector_use fail it call the
> > kvm_virtio_pci_irqfd_release,but at this time this is irqfd
> > is not using now
>
> thanks
> -- PMM
next prev parent reply other threads:[~2024-04-16 18:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-16 12:29 [PATCH] virtio-pci: Fix the failure process in kvm_virtio_pci_vector_use_one() Cindy Lu
2024-04-16 12:30 ` Peter Maydell
2024-04-16 12:40 ` Cindy Lu
2024-04-16 13:14 ` Peter Maydell
2024-04-16 18:38 ` Michael S. Tsirkin [this message]
2024-04-18 9:46 ` Cindy Lu
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=20240416143608-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=jasowang@redhat.com \
--cc=lulu@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@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.