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
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 |
Computing file changes ...