From nobody Thu Dec 18 23:03:39 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1595927506; cv=none; d=zohomail.com; s=zohoarc; b=lTPoVDdVEsbWDFDsUvb8E08wod+F/jVUfpPZ0qkyLwIeZWSkCat2bZ5VNOcY0o/AR/I7w4RsrfgoJvzs6BxZMUskOcBm4JgjdLPBLCU2VngYGPY7NoybTSDlmD/5XB1nXHrvxIcgECqS2I8tPa7TEyt5lQlCFD6Az0Iitz9FBcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1595927506; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=QEWe54TC6Rr7+K7ziQiMtOrZqhkhpMwTIP1e/wV8VVU=; b=CVOmmn+t8ma8HkjbuNl2n5GTP8V5n69TYGl4NJbzqG7hpHJLFuxg7okTra9+gY3t6uqK985VMT3E6k6LA4T4scOL2g7Px3X4CwiuvAgzrX7HQ0x95XiWPeR75xQxJy7Q5+4veS7xM9/kcfKq2XzQmLT8H42T+12uJeAZ/PSXLlA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1595927506713133.23158616917192; Tue, 28 Jul 2020 02:11:46 -0700 (PDT) Received: from localhost ([::1]:50730 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k0LeD-0007YW-7c for importer@patchew.org; Tue, 28 Jul 2020 05:11:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60000) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k0Ld6-0006KD-Jq for qemu-devel@nongnu.org; Tue, 28 Jul 2020 05:10:36 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:55962 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k0Ld4-0007CW-PE for qemu-devel@nongnu.org; Tue, 28 Jul 2020 05:10:36 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-377-6lPiy0tLPBKVRNr19AFrOw-1; Tue, 28 Jul 2020 05:10:31 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 85C971DE1; Tue, 28 Jul 2020 09:10:30 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-214.pek2.redhat.com [10.72.12.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id 348FC90E62; Tue, 28 Jul 2020 09:10:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1595927434; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=QEWe54TC6Rr7+K7ziQiMtOrZqhkhpMwTIP1e/wV8VVU=; b=H7KAgO4leSvF33scLRrXrCWI39MZ0TAsebeG6S8oXDol/1PbED0gw8KDapDbgwWuH0jDEX /aJa2PR2Q4/mmsAd8vBNOgprDt1GdTvtSkzyXusShtSK7gSlihs+3AKVXjTfmnr70r4WQr AbU4IlsZ2BAx0cs7AaWKBXbZH1PU1oU= X-MC-Unique: 6lPiy0tLPBKVRNr19AFrOw-1 From: Jason Wang To: peter.maydell@linaro.org Subject: [PULL V2 1/3] virtio-pci: fix wrong index in virtio_pci_queue_enabled Date: Tue, 28 Jul 2020 17:10:17 +0800 Message-Id: <1595927419-27346-2-git-send-email-jasowang@redhat.com> In-Reply-To: <1595927419-27346-1-git-send-email-jasowang@redhat.com> References: <1595927419-27346-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=207.211.31.120; envelope-from=jasowang@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/27 23:55:28 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, 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_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Yuri Benditovich , Jason Wang , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Yuri Benditovich We should use the index passed by the caller instead of the queue_sel when checking the enablement of a specific virtqueue. This is reported in https://bugzilla.redhat.com/show_bug.cgi?id=3D1702608 Fixes: f19bcdfedd53 ("virtio-pci: implement queue_enabled method") Signed-off-by: Yuri Benditovich Signed-off-by: Jason Wang --- hw/virtio/virtio-pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 4ad3ad8..ccdf54e 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1113,7 +1113,7 @@ static bool virtio_pci_queue_enabled(DeviceState *d, = int n) VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus); =20 if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { - return proxy->vqs[vdev->queue_sel].enabled; + return proxy->vqs[n].enabled; } =20 return virtio_queue_enabled_legacy(vdev, n); --=20 2.7.4 From nobody Thu Dec 18 23:03:39 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1595927506; cv=none; d=zohomail.com; s=zohoarc; b=IH8A4fu4Sf675Hi5ZkT8HXeYWkfYvVOnwT/AuvBPGIe+1hRT8auYr2VSr94WD7dVcN+anqHaoacNmh0N0ANNP3Gs2qBGVQ0gefnati9xKTPdbprLEnHWCG916vcEVbLJ1ouTqp6AThJzYrOSsmCN7NxNK5LH2R1k2x2DCmxNBYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1595927506; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=n03KLV8sGAHwM3z7JXtuYCSL1E+BbALjV9c8F3Y1sHs=; b=Td+8ip617IWc2RBVzRxxgOA7Osibn7qFvpyCauTolgXWjE/0ncR1vCNZrsNSGUIQROjpUcQkHzHe86wl17kapoR/nhVMn/JCT7qpi1Nt4PaFdOUdzlUjfXU8Lf3c4zN53JU6mFIAwIjp62lo+AoStxXfuKE9QnjdlBqHfxioOwQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1595927506893233.32893512999783; Tue, 28 Jul 2020 02:11:46 -0700 (PDT) Received: from localhost ([::1]:50804 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k0LeD-0007aG-Mk for importer@patchew.org; Tue, 28 Jul 2020 05:11:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60014) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k0Ld8-0006Lt-2K for qemu-devel@nongnu.org; Tue, 28 Jul 2020 05:10:38 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:36863 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k0Ld6-0007Ca-CZ for qemu-devel@nongnu.org; Tue, 28 Jul 2020 05:10:37 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-149-JSKjLX9DPJSsIbZeVtrOrw-1; Tue, 28 Jul 2020 05:10:33 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E08B31DE2; Tue, 28 Jul 2020 09:10:32 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-214.pek2.redhat.com [10.72.12.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id 24EE890E6D; Tue, 28 Jul 2020 09:10:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1595927435; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=n03KLV8sGAHwM3z7JXtuYCSL1E+BbALjV9c8F3Y1sHs=; b=Lwx908MbaQtwyENLmdp7Hip0p3sBm0A3p/WKFIpBumKI2vPIOsrxOw0vjPpunoSqJDCQkd 1uJLzVJ4Rt7nCCVWC+BZ+pTUT+Jl9Fib9czyS6w/T/HsE67oB61btbcfrVX+RVB5AF/8KA nojAxuz+jV4Hiu+Z+Bz6ZbYYYUeBn4I= X-MC-Unique: JSKjLX9DPJSsIbZeVtrOrw-1 From: Jason Wang To: peter.maydell@linaro.org Subject: [PULL V2 2/3] virtio-net: check the existence of peer before accessing vDPA config Date: Tue, 28 Jul 2020 17:10:18 +0800 Message-Id: <1595927419-27346-3-git-send-email-jasowang@redhat.com> In-Reply-To: <1595927419-27346-1-git-send-email-jasowang@redhat.com> References: <1595927419-27346-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=207.211.31.120; envelope-from=jasowang@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/27 23:55:28 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, 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_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Wang , qemu-devel@nongnu.org, Cindy Lu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We try to check whether a peer is VDPA in order to get config from there - with no peer, this leads to a NULL pointer dereference. Add a check before trying to access the peer type. No peer means not VDPA. Fixes: 108a64818e69b ("vhost-vdpa: introduce vhost-vdpa backend") Cc: Cindy Lu Tested-by: Cornelia Huck Reviewed-by: Cornelia Huck Signed-off-by: Jason Wang --- hw/net/virtio-net.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 4895af1..a1fe9e9 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -125,6 +125,7 @@ static void virtio_net_get_config(VirtIODevice *vdev, u= int8_t *config) { VirtIONet *n =3D VIRTIO_NET(vdev); struct virtio_net_config netcfg; + NetClientState *nc =3D qemu_get_queue(n->nic); =20 int ret =3D 0; memset(&netcfg, 0 , sizeof(struct virtio_net_config)); @@ -142,13 +143,16 @@ static void virtio_net_get_config(VirtIODevice *vdev,= uint8_t *config) VIRTIO_NET_RSS_SUPPORTED_HASHES); memcpy(config, &netcfg, n->config_size); =20 - NetClientState *nc =3D qemu_get_queue(n->nic); - if (nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_VDPA) { + /* + * Is this VDPA? No peer means not VDPA: there's no way to + * disconnect/reconnect a VDPA peer. + */ + if (nc->peer && nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_VD= PA) { ret =3D vhost_net_get_config(get_vhost_net(nc->peer), (uint8_t *)&= netcfg, - n->config_size); - if (ret !=3D -1) { - memcpy(config, &netcfg, n->config_size); - } + n->config_size); + if (ret !=3D -1) { + memcpy(config, &netcfg, n->config_size); + } } } =20 @@ -156,6 +160,7 @@ static void virtio_net_set_config(VirtIODevice *vdev, c= onst uint8_t *config) { VirtIONet *n =3D VIRTIO_NET(vdev); struct virtio_net_config netcfg =3D {}; + NetClientState *nc =3D qemu_get_queue(n->nic); =20 memcpy(&netcfg, config, n->config_size); =20 @@ -166,11 +171,14 @@ static void virtio_net_set_config(VirtIODevice *vdev,= const uint8_t *config) qemu_format_nic_info_str(qemu_get_queue(n->nic), n->mac); } =20 - NetClientState *nc =3D qemu_get_queue(n->nic); - if (nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_VDPA) { - vhost_net_set_config(get_vhost_net(nc->peer), (uint8_t *)&netcfg, - 0, n->config_size, - VHOST_SET_CONFIG_TYPE_MASTER); + /* + * Is this VDPA? No peer means not VDPA: there's no way to + * disconnect/reconnect a VDPA peer. + */ + if (nc->peer && nc->peer->info->type =3D=3D NET_CLIENT_DRIVER_VHOST_VD= PA) { + vhost_net_set_config(get_vhost_net(nc->peer), + (uint8_t *)&netcfg, 0, n->config_size, + VHOST_SET_CONFIG_TYPE_MASTER); } } =20 --=20 2.7.4 From nobody Thu Dec 18 23:03:39 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1595927583; cv=none; d=zohomail.com; s=zohoarc; b=Zu5RiflNoGTay7AuNKsKHjNTwLTH3VGNkWmjvl4WXUMwBFg6D/CNFTKUVMRJSehliy5CfxO4QLDvw2qZgXFYw4G+EQH7Ju+8CLQ6TAYbAesuBW7cW9f4PgBrvOyCjnh/qVp+h4GEMnw+m52LFZ7FD4xyZ22rvNNqNQV+Nmno8hg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1595927583; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=BizKAjSDHwqLVrq96cuiIXoDoNkf2Pbi3L5JlP/JAHo=; b=eWnUxiVaV42fvhZ22d98fV1sr5IY25bEqjhTUwRE0iFFzs/2vQuJTvXXrtWwNwcB7NNmQloNBWhGSbO/rYhfwCnc2ZzZGvYVXQvdiKlxO6q4GRbGYOp4nX/FuuyGtXX4Vp1DCpRlm0neLG4XP7dT8oF5ckwoIcTSjKEYrQIhPl0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1595927583946832.7089799760483; Tue, 28 Jul 2020 02:13:03 -0700 (PDT) Received: from localhost ([::1]:54968 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k0LfS-0000sW-Nv for importer@patchew.org; Tue, 28 Jul 2020 05:13:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60034) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k0Ld9-0006Ok-RR for qemu-devel@nongnu.org; Tue, 28 Jul 2020 05:10:39 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:39093 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k0Ld8-0007Df-9g for qemu-devel@nongnu.org; Tue, 28 Jul 2020 05:10:39 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-481-jK5oLramPnaKBWu5pCTfiQ-1; Tue, 28 Jul 2020 05:10:35 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E26E51932480; Tue, 28 Jul 2020 09:10:34 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-214.pek2.redhat.com [10.72.12.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6F7EE90E62; Tue, 28 Jul 2020 09:10:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1595927437; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=BizKAjSDHwqLVrq96cuiIXoDoNkf2Pbi3L5JlP/JAHo=; b=NNfq+3tDlUgum+tX/fc4QPR30/gtTOAuRdzW9Zhj5R6mh2B1LpcJIKwypPTZrybl5LRahZ dZ5yoNM6EqdHt4L0JnkMVcfThZMW1cEO32dmiGQ9uJFLNk9jNdqJuXx1KJQbf9ewl9kO4i zoAdVHPtVxMQ/rSE3KcziAfE3m3MKi0= X-MC-Unique: jK5oLramPnaKBWu5pCTfiQ-1 From: Jason Wang To: peter.maydell@linaro.org Subject: [PULL V2 3/3] net: forbid the reentrant RX Date: Tue, 28 Jul 2020 17:10:19 +0800 Message-Id: <1595927419-27346-4-git-send-email-jasowang@redhat.com> In-Reply-To: <1595927419-27346-1-git-send-email-jasowang@redhat.com> References: <1595927419-27346-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=207.211.31.120; envelope-from=jasowang@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/27 23:55:28 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, 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_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Wang , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The memory API allows DMA into NIC's MMIO area. This means the NIC's RX routine must be reentrant. Instead of auditing all the NIC, we can simply detect the reentrancy and return early. The queue->delivering is set and cleared by qemu_net_queue_deliver() for other queue helpers to know whether the delivering in on going (NIC's receive is being called). We can check it and return early in qemu_net_queue_flush() to forbid reentrant RX. Signed-off-by: Jason Wang --- net/queue.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/queue.c b/net/queue.c index 0164727..19e32c8 100644 --- a/net/queue.c +++ b/net/queue.c @@ -250,6 +250,9 @@ void qemu_net_queue_purge(NetQueue *queue, NetClientSta= te *from) =20 bool qemu_net_queue_flush(NetQueue *queue) { + if (queue->delivering) + return false; + while (!QTAILQ_EMPTY(&queue->packets)) { NetPacket *packet; int ret; --=20 2.7.4