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
Raw File
meson.build
subdir('9pfs')
subdir('acpi')
subdir('adc')
subdir('audio')
subdir('block')
subdir('char')
subdir('core')
subdir('cpu')
subdir('cxl')
subdir('display')
subdir('dma')
subdir('gpio')
subdir('hyperv')
subdir('i2c')
subdir('ide')
subdir('input')
subdir('intc')
subdir('ipack')
subdir('ipmi')
subdir('isa')
subdir('mem')
subdir('misc')
subdir('net')
subdir('nubus')
subdir('nvme')
subdir('nvram')
subdir('pci')
subdir('pci-bridge')
subdir('pci-host')
subdir('pcmcia')
subdir('rdma')
subdir('rtc')
subdir('scsi')
subdir('sd')
subdir('sensor')
subdir('smbios')
subdir('ssi')
subdir('timer')
subdir('tpm')
subdir('ufs')
subdir('usb')
subdir('vfio')
subdir('virtio')
subdir('watchdog')
subdir('xen')
subdir('xenpv')

subdir('alpha')
subdir('arm')
subdir('avr')
subdir('cris')
subdir('hppa')
subdir('i386')
subdir('loongarch')
subdir('m68k')
subdir('microblaze')
subdir('mips')
subdir('nios2')
subdir('openrisc')
subdir('ppc')
subdir('remote')
subdir('riscv')
subdir('rx')
subdir('s390x')
subdir('sh4')
subdir('sparc')
subdir('sparc64')
subdir('tricore')
subdir('xtensa')
back to top