From nobody Sun Feb 8 11:16:36 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1657609999; cv=none; d=zohomail.com; s=zohoarc; b=ZVSlGdpuuRxGWPGzoE1besjgjyr6y/3YZCL4psCTrvvhDqtJfbeDnSOAq/zKT2cnNOqtuI+AqLDOlTlavXwj4Hk/WCR5/VNqvzU2Gc4aod9NiBgwuBIrq179+q416+y7GpxlN/EEangrPHln+ymBGLlQ7fBlDR6ewxn9aFTpLik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1657609999; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=8KRwJT+2rdLSHUJavjhTsGJ0GQzgJxB2o8jQxNmcNXM=; b=fryyoHUJ4Y/17fHEM0mAxupz53miJGAbe3t21dbJ1rY8v5ZTGpMp6L5bQrTLDomgfMQvZU5xCjFizbLM3xn81ZJNYRGjJJZ+ImGD73RdgVH6hO31hEvTfiGJR3/DXArwzuHK0oYwMB3ojfolGOHx2xrrEdioOb0K6mI/QXX7QQg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1657609999841114.21570858436235; Tue, 12 Jul 2022 00:13:19 -0700 (PDT) Received: from localhost ([::1]:39238 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oBA58-0003fQ-HS for importer@patchew.org; Tue, 12 Jul 2022 03:13:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oBA0L-0001D8-8p for qemu-devel@nongnu.org; Tue, 12 Jul 2022 03:08:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:26849) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oBA0G-0004nS-Cl for qemu-devel@nongnu.org; Tue, 12 Jul 2022 03:08:17 -0400 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-166-bxQB0qktNVmpRKdr214TLw-1; Tue, 12 Jul 2022 03:08:08 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E0C4B811E7A for ; Tue, 12 Jul 2022 07:08:07 +0000 (UTC) Received: from eperezma.remote.csb (unknown [10.39.192.179]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0AF4640CF8EF; Tue, 12 Jul 2022 07:08:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1657609695; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8KRwJT+2rdLSHUJavjhTsGJ0GQzgJxB2o8jQxNmcNXM=; b=CMLS++ewA6vIiwWkUnmzCaqxKPDJxP4O4KA88qw9hEW5a1oAt2UrW7rOG6Z98mv7gxRrHO Yc3mwouxKNn9obAnybcugIGczNeMqJKPrPfAHmtqqolGx480bNOtNYL5LE21xFZRPsmmUI SHRwK3PwIpVzBLusY9M0Sw+eGoYGl2c= X-MC-Unique: bxQB0qktNVmpRKdr214TLw-1 From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , Laurent Vivier , Jason Wang Subject: [PATCH] vhost: Return earlier if used buffers overrun SVQ flush Date: Tue, 12 Jul 2022 09:08:04 +0200 Message-Id: <20220712070804.2140168-1-eperezma@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=eperezma@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1657610001457100001 Previous function misses the just picked avail buffer from the queue. This way keeps blocking the used queue until queue reset, but is cleaner to check before calling to vhost_svq_get_buf. Fixes: 100890f7cad50 ("vhost: Shadow virtqueue buffers forwarding") Acked-by: Jason Wang Signed-off-by: Eugenio P=C3=A9rez --- hw/virtio/vhost-shadow-virtqueue.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index 56c96ebd13..9280285435 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -405,19 +405,21 @@ static void vhost_svq_flush(VhostShadowVirtqueue *svq, vhost_svq_disable_notification(svq); while (true) { uint32_t len; - g_autofree VirtQueueElement *elem =3D vhost_svq_get_buf(svq, &= len); - if (!elem) { - break; - } + g_autofree VirtQueueElement *elem =3D NULL; =20 if (unlikely(i >=3D svq->vring.num)) { qemu_log_mask(LOG_GUEST_ERROR, "More than %u used buffers obtained in a %u size = SVQ", i, svq->vring.num); - virtqueue_fill(vq, elem, len, i); - virtqueue_flush(vq, i); + virtqueue_flush(vq, svq->vring.num); return; } + + elem =3D vhost_svq_get_buf(svq, &len); + if (!elem) { + break; + } + virtqueue_fill(vq, elem, len, i++); } =20 --=20 2.31.1