id = 2805 title = "vhost-device-snd does not report correctly the device conf size" state = "closed" created_at = "2025-02-06T18:04:06.905Z" closed_at = "2025-02-21T23:15:13.433Z" labels = ["device:virtio"] url = "https://gitlab.com/qemu-project/qemu/-/issues/2805" host-os = "Fedora 37" host-arch = "x86" qemu-version = "9.2.50 (v9.2.0-1537-gd922088eb4)" guest-os = "Linux" guest-arch = "x86" description = """The vhost-user-snd frontend is incorrectly reporting the size of the device configuration space, which should be based on the features exposed by the device. For example, the `controls` field in the `virtio_snd_config` structure is optional and should only be included in the configuration size if the `VIRTIO_SND_F_CTLS` feature has been negotiated. This issue became apparent after commit `ab0c7fb2`, where `virtio_snd_config` was updated to include the `controls` field. The vhost-user-snd frontend, relying on this structure, started expecting `sizeof(virtio_snd_config)` when communicating with the backend, regardless of whether the `VIRTIO_SND_F_CTLS` feature was negotiated. As a result, any backend reporting a smaller configuration size—for example, one that does not support controls—cannot communicate with the frontend. We observed this problem in the vhost-device-sound rust-vmm device, which we partially fixed [here](https://github.com/rust-vmm/vhost-device/commit/8e7b7109316e1027548bc91cfcbb4b096b032c24). This behavior is incorrect because the configuration size should depend on the negotiated features. I am currently working on patch to fix this.""" reproduce = """1. Run vhost-device-sound ```bash cargo run --bin vhost-device-sound -- --socket=/tmp/vhost-sound.socket --backend=pipewire ``` 2. Run QEMU with the parameters above 3. In the guest run: ```bash root@syzkaller:~# aplay /usr/share/sounds/alsa/Front_Left.wav aplay: main:830: audio open error: No such file or directory ```""" additional = """"""