blob: d8de99ac0192f04b33120f800ed37a64179b3e54 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
vhost-device-snd does not report correctly the device conf size
Description of problem:
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.
Steps to 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 information:
|