Revision 20cd0c86553e14c495451ce7d1e2e4efd81041f0 authored by Manos Pitsidianakis on 24 March 2024, 10:04:59 UTC, committed by Michael Tokarev on 09 April 2024, 18:15:05 UTC
The current handling of invalid virtqueue elements inside the TX/RX virt
queue handlers is wrong.

They are added in a per-stream invalid queue to be processed after the
handler is done examining each message, but the invalid message might
not be specifying any stream_id; which means it's invalid to add it to
any stream->invalid queue since stream could be NULL at this point.

This commit moves the invalid queue to the VirtIOSound struct which
guarantees there will always be a valid temporary place to store them
inside the tx/rx handlers. The queue will be emptied before the handler
returns, so the queue must be empty at any other point of the device's
lifetime.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Message-Id: <virtio-snd-rewrite-invalid-tx-rx-message-handling-v1.manos.pitsidianakis@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
(cherry picked from commit 731655f87f319fd06f27282c6cafbc2467ac8045)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
1 parent 627aa46
History
File Mode Size
3270-ccw.c -rw-r--r-- 4.5 KB
Kconfig -rw-r--r-- 304 bytes
ap-bridge.c -rw-r--r-- 2.1 KB
ap-device.c -rw-r--r-- 867 bytes
ccw-device.c -rw-r--r-- 2.2 KB
ccw-device.h -rw-r--r-- 1.4 KB
cpu-topology.c -rw-r--r-- 14.3 KB
css-bridge.c -rw-r--r-- 4.7 KB
css.c -rw-r--r-- 77.9 KB
event-facility.c -rw-r--r-- 15.7 KB
ipl.c -rw-r--r-- 24.1 KB
ipl.h -rw-r--r-- 7.7 KB
meson.build -rw-r--r-- 2.2 KB
s390-ccw.c -rw-r--r-- 5.1 KB
s390-pci-bus.c -rw-r--r-- 44.6 KB
s390-pci-inst.c -rw-r--r-- 41.3 KB
s390-pci-kvm.c -rw-r--r-- 1.9 KB
s390-pci-vfio.c -rw-r--r-- 11.1 KB
s390-skeys-kvm.c -rw-r--r-- 2.2 KB
s390-skeys.c -rw-r--r-- 14.3 KB
s390-stattrib-kvm.c -rw-r--r-- 6.1 KB
s390-stattrib.c -rw-r--r-- 10.8 KB
s390-virtio-ccw.c -rw-r--r-- 39.0 KB
s390-virtio-hcall.c -rw-r--r-- 950 bytes
s390-virtio-hcall.h -rw-r--r-- 726 bytes
sclp.c -rw-r--r-- 14.6 KB
sclpcpu.c -rw-r--r-- 2.6 KB
sclpquiesce.c -rw-r--r-- 3.5 KB
tod-kvm.c -rw-r--r-- 4.7 KB
tod-tcg.c -rw-r--r-- 2.2 KB
tod.c -rw-r--r-- 3.4 KB
trace-events -rw-r--r-- 2.6 KB
trace.h -rw-r--r-- 34 bytes
vhost-scsi-ccw.c -rw-r--r-- 2.0 KB
vhost-user-fs-ccw.c -rw-r--r-- 2.2 KB
vhost-vsock-ccw.c -rw-r--r-- 2.3 KB
virtio-ccw-9p.c -rw-r--r-- 2.1 KB
virtio-ccw-balloon.c -rw-r--r-- 2.5 KB
virtio-ccw-blk.c -rw-r--r-- 2.2 KB
virtio-ccw-crypto.c -rw-r--r-- 2.3 KB
virtio-ccw-gpu.c -rw-r--r-- 2.3 KB
virtio-ccw-input.c -rw-r--r-- 4.3 KB
virtio-ccw-net.c -rw-r--r-- 2.4 KB
virtio-ccw-rng.c -rw-r--r-- 2.2 KB
virtio-ccw-scsi.c -rw-r--r-- 2.5 KB
virtio-ccw-serial.c -rw-r--r-- 2.5 KB
virtio-ccw.c -rw-r--r-- 40.3 KB
virtio-ccw.h -rw-r--r-- 2.6 KB

back to top