]> git.ipfire.org Git - thirdparty/qemu.git/commit
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 Tokarev <mjt@tls.msk.ru>
Tue, 9 Apr 2024 18:15:05 +0000 (21:15 +0300)
commit20cd0c86553e14c495451ce7d1e2e4efd81041f0
tree294272788ecac73e63bc4bef2fa013eaed61c79d
parent627aa460baf789b44cfd1d1285d6ad038c245959
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>
(cherry picked from commit 731655f87f319fd06f27282c6cafbc2467ac8045)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/audio/virtio-snd.c
include/hw/audio/virtio-snd.h