When filled is negative (underrun), qpw_write() logs an error but falls through to spa_ringbuffer_write_data(). Bail out instead.
Reported-by: Pavee Hui <[email protected]> Fixes: c2d3d1c29415 ("audio/pwaudio.c: Add Pipewire audio backend for QEMU") Signed-off-by: Marc-André Lureau <[email protected]> --- audio/pwaudio.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/audio/pwaudio.c b/audio/pwaudio.c index 8b3faae8a907..18b371dc4f93 100644 --- a/audio/pwaudio.c +++ b/audio/pwaudio.c @@ -326,6 +326,8 @@ qpw_write(HWVoiceOut *hw, void *data, size_t len) if (filled < 0) { error_report("%p: underrun write:%u filled:%d", pw, index, filled); + len = 0; + goto done_unlock; } else { if ((uint32_t) filled + len > RINGBUFFER_SIZE) { error_report("%p: overrun write:%u filled:%d + size:%zu > max:%u", -- 2.56.0.rc0.29.g47ce80527c56
