> -----Original Message----- > From: Maxime Coquelin <maxime.coque...@redhat.com> > Sent: Friday, March 31, 2023 11:43 PM > To: dev@dpdk.org; david.march...@redhat.com; Xia, Chenbo > <chenbo....@intel.com>; m...@redhat.com; f...@redhat.com; > jasow...@redhat.com; Liang, Cunming <cunming.li...@intel.com>; Xie, Yongji > <xieyon...@bytedance.com>; echau...@redhat.com; epere...@redhat.com; > amore...@redhat.com > Cc: Maxime Coquelin <maxime.coque...@redhat.com>; sta...@dpdk.org > Subject: [RFC 02/27] vhost: fix invalid call FD handling > > This patch fixes cases where IRQ injection is tried while > the call FD is not valid, which should not happen. > > Fixes: b1cce26af1dc ("vhost: add notification for packed ring") > Fixes: e37ff954405a ("vhost: support virtqueue interrupt/notification > suppression") > Cc: sta...@dpdk.org > > Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com> > --- > lib/vhost/vhost.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h > index 8554ab4002..40863f7bfd 100644 > --- a/lib/vhost/vhost.h > +++ b/lib/vhost/vhost.h > @@ -902,9 +902,9 @@ vhost_vring_call_split(struct virtio_net *dev, struct > vhost_virtqueue *vq) > "%s: used_event_idx=%d, old=%d, new=%d\n", > __func__, vhost_used_event(vq), old, new); > > - if ((vhost_need_event(vhost_used_event(vq), new, old) && > - (vq->callfd >= 0)) || > - unlikely(!signalled_used_valid)) { > + if ((vhost_need_event(vhost_used_event(vq), new, old) || > + unlikely(!signalled_used_valid)) && > + vq->callfd >= 0) { > eventfd_write(vq->callfd, (eventfd_t) 1); > if (dev->flags & VIRTIO_DEV_STATS_ENABLED) > vq->stats.guest_notifications++; > @@ -971,7 +971,7 @@ vhost_vring_call_packed(struct virtio_net *dev, struct > vhost_virtqueue *vq) > if (vhost_need_event(off, new, old)) > kick = true; > kick: > - if (kick) { > + if (kick && vq->callfd >= 0) { > eventfd_write(vq->callfd, (eventfd_t)1); > if (dev->flags & VIRTIO_DEV_STATS_ENABLED) > vq->stats.guest_notifications++; > -- > 2.39.2
Reviewed-by: Chenbo Xia <chenbo....@intel.com>