02.06.2023 19:27, Laurent Vivier wrote:
in vhost_dev_enable_notifiers(), if virtio_bus_set_host_notifier(true)
fails, we call vhost_dev_disable_notifiers() that executes
virtio_bus_set_host_notifier(false) on all queues, even on queues that
have failed to be initialized.

This triggers a core dump in memory_region_del_eventfd():

  virtio_bus_set_host_notifier: unable to init event notifier: Too many open 
files (-24)
  vhost VQ 1 notifier binding failed: 24
  .../softmmu/memory.c:2611: memory_region_del_eventfd: Assertion `i != 
mr->ioeventfd_nb' failed.

Fix the problem by providing to vhost_dev_disable_notifiers() the
number of queues to disable.

Fixes: 8771589b6f81 ("vhost: simplify vhost_dev_enable_notifiers")
Cc: longpe...@huawei.com
Signed-off-by: Laurent Vivier <lviv...@redhat.com>
---
  hw/virtio/vhost.c | 65 ++++++++++++++++++++++++++---------------------
  1 file changed, 36 insertions(+), 29 deletions(-)

Is this one a candidate for -stable?

The diffstat is somewhat large but it is just moving bit of code around.

Thanks,

/mjt

Reply via email to