]> git.ipfire.org Git - thirdparty/qemu.git/commit - hw/audio/virtio-snd.c
virtio-snd: rewrite invalid tx/rx message handling
authorManos Pitsidianakis <manos.pitsidianakis@linaro.org>
Sun, 24 Mar 2024 10:04:59 +0000 (12:04 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 9 Apr 2024 06:31:16 +0000 (02:31 -0400)
commit731655f87f319fd06f27282c6cafbc2467ac8045
tree26379535218e48e114a997cb3175da3a6d7518fd
parenta45f09935c88ae352a5ec120418a8b2b36ec1daa
virtio-snd: rewrite invalid tx/rx message handling

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>
hw/audio/virtio-snd.c
include/hw/audio/virtio-snd.h