From nobody Thu Apr 3 10:05:05 2025 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=1741609454; cv=none; d=zohomail.com; s=zohoarc; b=cCTXo8+Vx+iOcfvWLIyFyZewTuxD6WpN2RG+5BrjR3jloNPHta2nl3Cyas5m/fSXcmcJJz6iWvWXGrcRQcNFxN6iA9vwKOCU12ocx85o8NRmQ/TjjZOlOu2+ITci8opTnUACsOAtCSEaQWvvIlYcpd8CCIRPnT2mcci061EZ8WY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741609454; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oWpLQ5UffopEreR+h80b09wvJlbh0Nvw29HAc/Y4daY=; b=XTRk4xllIQzAGR+vG2ikDkV99N9EtRfCFEMRt74oSqKhzNhp/6pH7GVHb4I23TK3RYv3tYd8oshrg0YzaHDHtpy+0EUKZ7QlPCp61w8ULvSQZYBJ7ILaMdMHo9eNZnx8g0o9qk0ViTuvSMjs/HsUFE95Znsz3uQg3ZpWNiGiXKY= 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 174160945414735.80425226384159; Mon, 10 Mar 2025 05:24:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trcA2-0005iH-9J; Mon, 10 Mar 2025 08:23:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trc9r-0005eV-2C for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:22:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trc9o-0004wt-IC for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:22:58 -0400 Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-621-CJpEny4QOQmhWo1hZvRRRg-1; Mon, 10 Mar 2025 08:22:53 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A7D7219560AD; Mon, 10 Mar 2025 12:22:51 +0000 (UTC) Received: from localhost.localdomain (unknown [10.72.112.39]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4E7411800370; Mon, 10 Mar 2025 12:22:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741609374; 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: in-reply-to:in-reply-to:references:references; bh=oWpLQ5UffopEreR+h80b09wvJlbh0Nvw29HAc/Y4daY=; b=FviXPVdw87EirkBrm57WBXM4YdeDZZnlbSDqqjx0FmOWzZ+r5g9VXTdd8h7x7QdiG1AKSK arSsL4n2vafjXrt/J7VngfG/9QV3ZhMyme1vZNPfwMJvhS78uxK3R/pkKgrpjlfi679HU2 QC3HlpA0cV1pJ39JAGHlz/6Y3k/MJlc= X-MC-Unique: CJpEny4QOQmhWo1hZvRRRg-1 X-Mimecast-MFC-AGG-ID: CJpEny4QOQmhWo1hZvRRRg_1741609372 From: Jason Wang To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Si-Wei Liu , Jason Wang Subject: [PULL 1/5] net: parameterize the removing client from nc list Date: Mon, 10 Mar 2025 20:22:36 +0800 Message-ID: <20250310122240.2908-2-jasowang@redhat.com> In-Reply-To: <20250310122240.2908-1-jasowang@redhat.com> References: <20250310122240.2908-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1741609456584019100 From: Eugenio P=C3=A9rez This change is used in later commits so we can avoid the removal of the netclient if it is delayed. No functional change intended. Reviewed-by: Si-Wei Liu Acked-by: Jason Wang Signed-off-by: Eugenio P=C3=A9rez Signed-off-by: Jason Wang --- net/net.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/net/net.c b/net/net.c index a3996d5c62..4eb78a1299 100644 --- a/net/net.c +++ b/net/net.c @@ -381,9 +381,12 @@ NetClientState *qemu_get_peer(NetClientState *nc, int = queue_index) return ncs->peer; } =20 -static void qemu_cleanup_net_client(NetClientState *nc) +static void qemu_cleanup_net_client(NetClientState *nc, + bool remove_from_net_clients) { - QTAILQ_REMOVE(&net_clients, nc, next); + if (remove_from_net_clients) { + QTAILQ_REMOVE(&net_clients, nc, next); + } =20 if (nc->info->cleanup) { nc->info->cleanup(nc); @@ -442,14 +445,14 @@ void qemu_del_net_client(NetClientState *nc) } =20 for (i =3D 0; i < queues; i++) { - qemu_cleanup_net_client(ncs[i]); + qemu_cleanup_net_client(ncs[i], true); } =20 return; } =20 for (i =3D 0; i < queues; i++) { - qemu_cleanup_net_client(ncs[i]); + qemu_cleanup_net_client(ncs[i], true); qemu_free_net_client(ncs[i]); } } @@ -474,7 +477,7 @@ void qemu_del_nic(NICState *nic) for (i =3D queues - 1; i >=3D 0; i--) { NetClientState *nc =3D qemu_get_subqueue(nic, i); =20 - qemu_cleanup_net_client(nc); + qemu_cleanup_net_client(nc, true); qemu_free_net_client(nc); } =20 --=20 2.42.0 From nobody Thu Apr 3 10:05:05 2025 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=1741609501; cv=none; d=zohomail.com; s=zohoarc; b=nwSrpRuzUq1VZI9NcBDjjcFgSLbQ8uDbw3QyMFfefky52jvnx61ymC8VIIPIDkK+dX1Ydx5CGrTQ6LoqIRUgpNUGo2fP1hcbW3QHpgb3YiAJZKjNH4egegvOdeUNvCQ5jj2sFCrPiE4yIj5zezpSivGBeBltleBX4N5QXYpE1AU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741609501; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dwt1EUwNOdtOybw1UDYslyRkZzbPoiB/Rdx21wIxFBA=; b=dnIAiysDYrZj2B5Ff5D6nffu7Mh0IghyEIV24yqP3aHmE7glNo9eB8ViXEYDB2/ANs5mxUI5ubH7QuoQY6WsZDVTYWKnFWvas7P+9PH5zGsE7d00MtlORn/rUi57lEs3d2DAtWcWNJftHPOjnTgGLF4bBkuH9kZPLw3xsMUu92Y= 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 1741609501524225.41618917042; Mon, 10 Mar 2025 05:25:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trcB9-0006To-W5; Mon, 10 Mar 2025 08:24:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trcB1-0006Ga-L2 for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:24:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trcAz-00056O-D2 for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:24:11 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-517-q1wt-34SOm-Ak8g0yzbC5w-1; Mon, 10 Mar 2025 08:22:57 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2AF841800259; Mon, 10 Mar 2025 12:22:56 +0000 (UTC) Received: from localhost.localdomain (unknown [10.72.112.39]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6DAB01800370; Mon, 10 Mar 2025 12:22:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741609446; 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: in-reply-to:in-reply-to:references:references; bh=dwt1EUwNOdtOybw1UDYslyRkZzbPoiB/Rdx21wIxFBA=; b=IvX0R1z/X/QBCHvIZo37fhzcSQRS68oQq/Nv2DfeB58uVCn+cFg9Yew40SAXc6JuQxzDwd JPOnD8ZjCazKkp7w1mOEqfnq6zt3f//sKkwKevyz4j5orQWOQ1CVjIFbNCfVxHwVnDab8o RsG+SeUqZiQP2Zov9yLicxilCWJq21Y= X-MC-Unique: q1wt-34SOm-Ak8g0yzbC5w-1 X-Mimecast-MFC-AGG-ID: q1wt-34SOm-Ak8g0yzbC5w_1741609376 From: Jason Wang To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Lei Yang , Jonah Palmer , Jason Wang Subject: [PULL 2/5] net: move backend cleanup to NIC cleanup Date: Mon, 10 Mar 2025 20:22:37 +0800 Message-ID: <20250310122240.2908-3-jasowang@redhat.com> In-Reply-To: <20250310122240.2908-1-jasowang@redhat.com> References: <20250310122240.2908-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1741609504432019100 From: Eugenio P=C3=A9rez Commit a0d7215e33 ("vhost-vdpa: do not cleanup the vdpa/vhost-net structures if peer nic is present") effectively delayed the backend cleanup, allowing the frontend or the guest to access it resources as long as the frontend is still visible to the guest. However it does not clean up the resources until the qemu process is over. This causes an effective leak if the device is deleted with device_del, as there is no way to close the vdpa device. This makes impossible to re-add that device to this or other QEMU instances until the first instance of QEMU is finished. Move the cleanup from qemu_cleanup to the NIC deletion and to net_cleanup. Fixes: a0d7215e33 ("vhost-vdpa: do not cleanup the vdpa/vhost-net structure= s if peer nic is present") Reported-by: Lei Yang Signed-off-by: Eugenio P=C3=A9rez Signed-off-by: Jonah Palmer Signed-off-by: Jason Wang --- net/net.c | 33 +++++++++++++++++++++++++++------ net/vhost-vdpa.c | 8 -------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/net/net.c b/net/net.c index 4eb78a1299..39d6f28158 100644 --- a/net/net.c +++ b/net/net.c @@ -428,7 +428,13 @@ void qemu_del_net_client(NetClientState *nc) object_unparent(OBJECT(nf)); } =20 - /* If there is a peer NIC, delete and cleanup client, but do not free.= */ + /* + * If there is a peer NIC, transfer ownership to it. Delete the client + * from net_client list but do not cleanup nor free. This way NIC can + * still access to members of the backend. + * + * The cleanup and free will be done when the NIC is free. + */ if (nc->peer && nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_NIC) { NICState *nic =3D qemu_get_nic(nc->peer); if (nic->peer_deleted) { @@ -438,16 +444,13 @@ void qemu_del_net_client(NetClientState *nc) =20 for (i =3D 0; i < queues; i++) { ncs[i]->peer->link_down =3D true; + QTAILQ_REMOVE(&net_clients, ncs[i], next); } =20 if (nc->peer->info->link_status_changed) { nc->peer->info->link_status_changed(nc->peer); } =20 - for (i =3D 0; i < queues; i++) { - qemu_cleanup_net_client(ncs[i], true); - } - return; } =20 @@ -465,8 +468,12 @@ void qemu_del_nic(NICState *nic) =20 for (i =3D 0; i < queues; i++) { NetClientState *nc =3D qemu_get_subqueue(nic, i); - /* If this is a peer NIC and peer has already been deleted, free i= t now. */ + /* + * If this is a peer NIC and peer has already been deleted, clean = it up + * and free it now. + */ if (nic->peer_deleted) { + qemu_cleanup_net_client(nc->peer, false); qemu_free_net_client(nc->peer); } else if (nc->peer) { /* if there are RX packets pending, complete them */ @@ -1681,6 +1688,9 @@ void net_cleanup(void) * of the latest NET_CLIENT_DRIVER_NIC, and operate on *p as we walk * the list. * + * However, the NIC may have peers that trust to be clean beyond this + * point. For example, if they have been removed with device_del. + * * The 'nc' variable isn't part of the list traversal; it's purely * for convenience as too much '(*p)->' has a tendency to make the * readers' eyes bleed. @@ -1688,6 +1698,17 @@ void net_cleanup(void) while (*p) { nc =3D *p; if (nc->info->type =3D=3D NET_CLIENT_DRIVER_NIC) { + NICState *nic =3D qemu_get_nic(nc); + + if (nic->peer_deleted) { + int queues =3D MAX(nic->conf->peers.queues, 1); + + for (int i =3D 0; i < queues; i++) { + nc =3D qemu_get_subqueue(nic, i); + qemu_cleanup_net_client(nc->peer, false); + } + } + /* Skip NET_CLIENT_DRIVER_NIC entries */ p =3D &QTAILQ_NEXT(nc, next); } else { diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index bd01866878..f7a54f46aa 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -224,14 +224,6 @@ static void vhost_vdpa_cleanup(NetClientState *nc) { VhostVDPAState *s =3D DO_UPCAST(VhostVDPAState, nc, nc); =20 - /* - * If a peer NIC is attached, do not cleanup anything. - * Cleanup will happen as a part of qemu_cleanup() -> net_cleanup() - * when the guest is shutting down. - */ - if (nc->peer && nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_NIC) { - return; - } munmap(s->cvq_cmd_out_buffer, vhost_vdpa_net_cvq_cmd_page_len()); munmap(s->status, vhost_vdpa_net_cvq_cmd_page_len()); if (s->vhost_net) { --=20 2.42.0 From nobody Thu Apr 3 10:05:05 2025 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=1741609502; cv=none; d=zohomail.com; s=zohoarc; b=JD9ABlo7hR7kpATCeGNqK9sx3QMFdj9ltFSh2iWYgpaaxqLvqTyICpltj7PLhFo8CXhJS5LCK0PP68r2XI+fMk66FxbFg+PDUFxOXah0nQSDxMUEcIv9D0tL9gSxU5YHlQitOvv+2PI/bzNfBCWngjjslKS9XUq/kdoltw/RpD4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741609502; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kWKu7IdPiikQnaEb+/ecY7BEpPi35/LOHKqPa+4vPpo=; b=gxBKjYjBnVh7+jiVfCKcWsjMTj96pAjmc66aYJAqn/gfMIYCFCCwnBEqLqwrXJbZKoHPbgAPHemnxqKtZiZCe/o26NNYQ0EVEiyKxjdOKwDxvsbvAF6kWeQfTFUtpZ03P2L5GKNUz1Yt8WR8seIB4L16qO49+HlFbhVQ0Wu22oc= 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 1741609502900815.5564784859482; Mon, 10 Mar 2025 05:25:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trcA3-0005jI-Gz; Mon, 10 Mar 2025 08:23:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trc9x-0005gg-AP for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:23:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trc9v-0004xz-1C for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:23:04 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-146-yHONpBx6ORKpPZBBDGbPaQ-1; Mon, 10 Mar 2025 08:23:00 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 34B8C1800258; Mon, 10 Mar 2025 12:22:59 +0000 (UTC) Received: from localhost.localdomain (unknown [10.72.112.39]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2C4F21800373; Mon, 10 Mar 2025 12:22:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741609381; 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: in-reply-to:in-reply-to:references:references; bh=kWKu7IdPiikQnaEb+/ecY7BEpPi35/LOHKqPa+4vPpo=; b=eXV3Qy1c5Fk/N5B6D/9RjD19OGfthTNkAtwaBXT9NCuN36KFWK1AF15ycfz/P3yL22m812 IS4jFVEQKMha6/TlU78d7RbOVGqrwXq3o+Qa3PrGvBBRm/EdAdQwmxXNe3LWhRecgAoLAb 0LWx+sdEesxRErDSPq1UpRMnfWEB/tw= X-MC-Unique: yHONpBx6ORKpPZBBDGbPaQ-1 X-Mimecast-MFC-AGG-ID: yHONpBx6ORKpPZBBDGbPaQ_1741609379 From: Jason Wang To: qemu-devel@nongnu.org Cc: Akihiko Odaki , Jason Wang Subject: [PULL 3/5] util/iov: Do not assert offset is in iov Date: Mon, 10 Mar 2025 20:22:38 +0800 Message-ID: <20250310122240.2908-4-jasowang@redhat.com> In-Reply-To: <20250310122240.2908-1-jasowang@redhat.com> References: <20250310122240.2908-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1741609504203019000 Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki iov_from_buf(), iov_to_buf(), iov_memset(), and iov_copy() asserts that the given offset fits in the iov while tolerating the specified number of bytes to operate with to be greater than the size of iov. This is inconsistent so remove the assertions. Asserting the offset fits in the iov makes sense if it is expected that there are other operations that process the content before the offset and the content is processed in order. Under this expectation, the offset should point to the end of bytes that are previously processed and fit in the iov. However, this expectation depends on the details of the caller, and did not hold true at least one case and required code to check iov_size(), which is added with commit 83ddb3dbba2e ("hw/net/net_tx_pkt: Fix overrun in update_sctp_checksum()"). Adding such a check is inefficient and error-prone. These functions already tolerate the specified number of bytes to operate with to be greater than the size of iov to avoid such checks so remove the assertions to tolerate invalid offset as well. They return the number of bytes they operated with so their callers can still check the returned value to ensure there are sufficient space at the given offset. Signed-off-by: Akihiko Odaki Signed-off-by: Jason Wang --- include/qemu/iov.h | 5 +++-- util/iov.c | 5 ----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/include/qemu/iov.h b/include/qemu/iov.h index 44f9db5cee..9535673c13 100644 --- a/include/qemu/iov.h +++ b/include/qemu/iov.h @@ -31,7 +31,7 @@ size_t iov_size(const struct iovec *iov, const unsigned i= nt iov_cnt); * only part of data will be copied, up to the end of the iovec. * Number of bytes actually copied will be returned, which is * min(bytes, iov_size(iov)-offset) - * `Offset' must point to the inside of iovec. + * Returns 0 when `offset' points to the outside of iovec. */ size_t iov_from_buf_full(const struct iovec *iov, unsigned int iov_cnt, size_t offset, const void *buf, size_t bytes); @@ -67,11 +67,12 @@ iov_to_buf(const struct iovec *iov, const unsigned int = iov_cnt, /** * Set data bytes pointed out by iovec `iov' of size `iov_cnt' elements, * starting at byte offset `start', to value `fillc', repeating it - * `bytes' number of times. `Offset' must point to the inside of iovec. + * `bytes' number of times. * If `bytes' is large enough, only last bytes portion of iovec, * up to the end of it, will be filled with the specified value. * Function return actual number of bytes processed, which is * min(size, iov_size(iov) - offset). + * Returns 0 when `offset' points to the outside of iovec. */ size_t iov_memset(const struct iovec *iov, const unsigned int iov_cnt, size_t offset, int fillc, size_t bytes); diff --git a/util/iov.c b/util/iov.c index 7777116123..f8536f0474 100644 --- a/util/iov.c +++ b/util/iov.c @@ -37,7 +37,6 @@ size_t iov_from_buf_full(const struct iovec *iov, unsigne= d int iov_cnt, offset -=3D iov[i].iov_len; } } - assert(offset =3D=3D 0); return done; } =20 @@ -56,7 +55,6 @@ size_t iov_to_buf_full(const struct iovec *iov, const uns= igned int iov_cnt, offset -=3D iov[i].iov_len; } } - assert(offset =3D=3D 0); return done; } =20 @@ -75,7 +73,6 @@ size_t iov_memset(const struct iovec *iov, const unsigned= int iov_cnt, offset -=3D iov[i].iov_len; } } - assert(offset =3D=3D 0); return done; } =20 @@ -277,7 +274,6 @@ unsigned iov_copy(struct iovec *dst_iov, unsigned int d= st_iov_cnt, bytes -=3D len; offset =3D 0; } - assert(offset =3D=3D 0); return j; } =20 @@ -348,7 +344,6 @@ size_t qemu_iovec_concat_iov(QEMUIOVector *dst, soffset -=3D src_iov[i].iov_len; } } - assert(soffset =3D=3D 0); /* offset beyond end of src */ =20 return done; } --=20 2.42.0 From nobody Thu Apr 3 10:05:05 2025 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=1741609514; cv=none; d=zohomail.com; s=zohoarc; b=R62VpqPdW1vfgDpSqIXV73eLWvE2Tjq9hkseXqVfcLzPOBxHCfDuYfN0ddSmoVmkphCEGLh2/UXUNTVzhZCMxNsGEmtpIAHOMeKOLnwMBJJhlcwYIqYXE0PwkpK/lwMinv+xIsP7ahmVX8IDZKr4Eu5g5gN/vdp32ehwvePYntY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741609514; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yKCXr7QZ15vk2Ndyq2p/Ic1Ofud4Up6zHi4FXD9pwJM=; b=oHdbOvRKBNAPDOoerv1qUtWm3Z16Wciiq8BaU8K9ZtGEGkomG9NghMKYIQt5yPg6i1DazFmBqiZdlz7/esr5U1jnWC40bPQWclZwnH1kOhkwIRl8WfZ+kWLov694WzQ6ecBNv5+QbcR3Meef4aRXXZJfXsgIGIVjBbI5YlfRlbY= 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 1741609514459886.6752933879062; Mon, 10 Mar 2025 05:25:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trcAY-0005lg-3I; Mon, 10 Mar 2025 08:23:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trcA7-0005kr-BE for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:23:16 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trcA1-0004z9-RI for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:23:14 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-133-6pE7k6jXMi6EcO_EnN5mnQ-1; Mon, 10 Mar 2025 08:23:03 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8A40B180AB19; Mon, 10 Mar 2025 12:23:02 +0000 (UTC) Received: from localhost.localdomain (unknown [10.72.112.39]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0DD3B180AF71; Mon, 10 Mar 2025 12:22:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741609387; 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: in-reply-to:in-reply-to:references:references; bh=yKCXr7QZ15vk2Ndyq2p/Ic1Ofud4Up6zHi4FXD9pwJM=; b=YRPDAS3tnOQLhN92dmlQMLmQFX0F0T5yM0z/B9aSQHH2w3sosc5ksadJ5oNQ616eM5WAQw 7AWQ2a+B5RZAsm0i+LXPzDwyphoGundeH1rvyalNYHH7vfz6P2k1NzIFsBcdkdmkex1SCz c7Ar2tNNa0N+4yalXlv5bbvxDB5Rn4w= X-MC-Unique: 6pE7k6jXMi6EcO_EnN5mnQ-1 X-Mimecast-MFC-AGG-ID: 6pE7k6jXMi6EcO_EnN5mnQ_1741609382 From: Jason Wang To: qemu-devel@nongnu.org Cc: Akihiko Odaki , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jason Wang Subject: [PULL 4/5] Revert "hw/net/net_tx_pkt: Fix overrun in update_sctp_checksum()" Date: Mon, 10 Mar 2025 20:22:39 +0800 Message-ID: <20250310122240.2908-5-jasowang@redhat.com> In-Reply-To: <20250310122240.2908-1-jasowang@redhat.com> References: <20250310122240.2908-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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.129.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1741609516379019100 From: Akihiko Odaki This reverts commit 83ddb3dbba2ee0f1767442ae6ee665058aeb1093. The added check is no longer necessary due to a change of iov_from_buf(). Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Akihiko Odaki Signed-off-by: Jason Wang --- hw/net/net_tx_pkt.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hw/net/net_tx_pkt.c b/hw/net/net_tx_pkt.c index 1f79b82b77..903238dca2 100644 --- a/hw/net/net_tx_pkt.c +++ b/hw/net/net_tx_pkt.c @@ -141,10 +141,6 @@ bool net_tx_pkt_update_sctp_checksum(struct NetTxPkt *= pkt) uint32_t csum =3D 0; struct iovec *pl_start_frag =3D pkt->vec + NET_TX_PKT_PL_START_FRAG; =20 - if (iov_size(pl_start_frag, pkt->payload_frags) < 8 + sizeof(csum)) { - return false; - } - if (iov_from_buf(pl_start_frag, pkt->payload_frags, 8, &csum, sizeof(c= sum)) < sizeof(csum)) { return false; } --=20 2.42.0 From nobody Thu Apr 3 10:05:05 2025 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=1741609454; cv=none; d=zohomail.com; s=zohoarc; b=MzcyGC945l2Z6v0ye1CBqHJldyWogaTCIyIyRqV4RzjuxeVfYYsREJ7QEiQxBldCcY2I2VeUcHUHM0eJL0vdhgDsSiK6ldn3mrPLJ6BBMD8Ju2W167ic/SbwjSzVL4AaLnkohF6TLii4bJZ8RqAfrNL0xFpwoj8HBE4gDKu9+uQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741609454; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4WQlBLlp4ltXr/SfUXVELPpmGEbHirnEhHyZVd5u19w=; b=Hi6Ax9HM3hwJyADuKX+/Mr/WmAdD0xiy709x6ZyIWotw5IvdvhBXvYzT9suNdI4tBl5ApmtdifX+4zb4P2CfHaD6nU2x08fbTt0QT+YjC14Xy+6lS8dtAge1CZCmwORmokWvVLuBSCUI1JfnMCXeK4NYfXMG3/LviF39G6a0Y1k= 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 1741609454296146.51565422363626; Mon, 10 Mar 2025 05:24:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trcA9-0005l1-LB; Mon, 10 Mar 2025 08:23:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trcA4-0005ju-5S for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:23:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1trcA0-0004zG-Iy for qemu-devel@nongnu.org; Mon, 10 Mar 2025 08:23:11 -0400 Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-294-P7ZMbLWWO1O1I9Ymd_ryaA-1; Mon, 10 Mar 2025 08:23:06 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7F3631955DCC; Mon, 10 Mar 2025 12:23:05 +0000 (UTC) Received: from localhost.localdomain (unknown [10.72.112.39]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2FA551800370; Mon, 10 Mar 2025 12:23:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741609387; 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: in-reply-to:in-reply-to:references:references; bh=4WQlBLlp4ltXr/SfUXVELPpmGEbHirnEhHyZVd5u19w=; b=BZQXhDZbQCQNnyZKkODD4/3pBPZ4dUUmev45UpWry8vNC3HRSQXufZFIJcaDzvdWp2MEKH a0st466CA2p7TCjFt8kV3ri8RJaW2x349VeaS60nFiy2NqdV/pX7MKPGeYpQxtudnNjiUa CH0XsedaIjkE0oKyQvfC9PFsjjhH5zU= X-MC-Unique: P7ZMbLWWO1O1I9Ymd_ryaA-1 X-Mimecast-MFC-AGG-ID: P7ZMbLWWO1O1I9Ymd_ryaA_1741609385 From: Jason Wang To: qemu-devel@nongnu.org Cc: Akihiko Odaki , Jason Wang Subject: [PULL 5/5] tap-linux: Open ipvtap and macvtap Date: Mon, 10 Mar 2025 20:22:40 +0800 Message-ID: <20250310122240.2908-6-jasowang@redhat.com> In-Reply-To: <20250310122240.2908-1-jasowang@redhat.com> References: <20250310122240.2908-1-jasowang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 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=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1741609456590019100 Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki ipvtap and macvtap create a file for each interface unlike tuntap, which creates one file shared by all interfaces. Try to open a file dedicated to the interface first for ipvtap and macvtap. Signed-off-by: Akihiko Odaki Signed-off-by: Jason Wang --- net/tap-linux.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/net/tap-linux.c b/net/tap-linux.c index 1226d5fda2..22ec2f45d2 100644 --- a/net/tap-linux.c +++ b/net/tap-linux.c @@ -45,10 +45,21 @@ int tap_open(char *ifname, int ifname_size, int *vnet_h= dr, int len =3D sizeof(struct virtio_net_hdr); unsigned int features; =20 - fd =3D RETRY_ON_EINTR(open(PATH_NET_TUN, O_RDWR)); + + ret =3D if_nametoindex(ifname); + if (ret) { + g_autofree char *file =3D g_strdup_printf("/dev/tap%d", ret); + fd =3D open(file, O_RDWR); + } else { + fd =3D -1; + } + if (fd < 0) { - error_setg_errno(errp, errno, "could not open %s", PATH_NET_TUN); - return -1; + fd =3D RETRY_ON_EINTR(open(PATH_NET_TUN, O_RDWR)); + if (fd < 0) { + error_setg_errno(errp, errno, "could not open %s", PATH_NET_TU= N); + return -1; + } } memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags =3D IFF_TAP | IFF_NO_PI; --=20 2.42.0