On 03.11.26 20:27, Eric Farman wrote:
Commit e3b12d0c55e4 ("util/event_notifier: more strict API") added an assert for an uninitialized file descriptor in event_notifier_get_fd(), but it presumes that such a thing always exists.On s390x, where a config notifier does not exist, this is a breaking change for any vhost-backed device such as virtio-net. To remedy this, move the acquisition of the file descriptor within the guard against vhost_set_config_call and expand the guard to ensure the notifier is initialized before being used. Fixes: e3b12d0c55e4 ("util/event_notifier: more strict API") Signed-off-by: Eric Farman <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
--- hw/virtio/vhost.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index b25919c5c7d..189ac541178 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -2119,8 +2119,9 @@ static void vhost_start_config_intr(struct vhost_dev *dev) virtio_config_get_guest_notifier(dev->vdev);assert(dev->vhost_ops);- int fd = event_notifier_get_fd(config_notifier); - if (dev->vhost_ops->vhost_set_config_call) { + if (dev->vhost_ops->vhost_set_config_call && + event_notifier_initialized(config_notifier)) { + int fd = event_notifier_get_fd(config_notifier); r = dev->vhost_ops->vhost_set_config_call(dev, fd); if (!r) { event_notifier_set(config_notifier);
-- Best regards, Vladimir
