Commit 42873c78d8 for qemu.org

commit 42873c78d8dcb7da471cff7e7062879d330aee96
Author: Marc-André Lureau <marcandre.lureau@redhat.com>
Date:   Sun Oct 4 14:23:24 2026 +0400

    audio/pwaudio: bail out on underrun in qpw_write

    When filled is negative (underrun), qpw_write() logs an error but
    falls through to spa_ringbuffer_write_data(). Bail out instead.

    Reported-by: Hui Peng <benquike@gmail.com>
    Fixes: c2d3d1c29415 ("audio/pwaudio.c: Add Pipewire audio backend for QEMU")
    Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
    Message-ID: <20261004-issue-4560-v1-10-ccbef537cbeb@redhat.com>

diff --git a/audio/pwaudio.c b/audio/pwaudio.c
index 8b3faae8a9..18b371dc4f 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",