From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D83ADA054A for ; Tue, 25 Oct 2022 17:09:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D580242C52; Tue, 25 Oct 2022 17:09:30 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 1E05142C1D for ; Tue, 25 Oct 2022 17:09:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666710569; 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=yxXvFC2bCPLyirC+loJnn5LvUWjZXvayCbrKU6zvH7E=; b=ImP5H9Yt5/wldpsYOP6vivUOGJYY4cGvektu2DjxbSiUoh6KY8S3DKHMz4xCkvJcOb59Ax 6JQ95/LqS0QL5t4qdo1GuKyCrxY+94xhvj18yX3mLwB32b1L4I+1lQMe5lAAYT0Yg9uNNf f1CN6VeWgb43jn9gcD3rDqdjBPmOSUk= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-375-oVAmqPhkMz-J1OjSPsIA0A-1; Tue, 25 Oct 2022 11:09:28 -0400 X-MC-Unique: oVAmqPhkMz-J1OjSPsIA0A-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 481D92999B53; Tue, 25 Oct 2022 15:09:27 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.192.13]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4973647505E; Tue, 25 Oct 2022 15:09:26 +0000 (UTC) From: Kevin Traynor To: Alexander Chernavin Cc: Chenbo Xia , dpdk stable Subject: patch 'net/virtio: fix crash when configured twice' has been queued to stable release 21.11.3 Date: Tue, 25 Oct 2022 16:06:58 +0100 Message-Id: <20221025150734.142189-63-ktraynor@redhat.com> In-Reply-To: <20221025150734.142189-1-ktraynor@redhat.com> References: <20221025150734.142189-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/01/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/21c7ed77f11c2e7e08a38dd3813a1bf7c7cb7071 Thanks. Kevin --- >From 21c7ed77f11c2e7e08a38dd3813a1bf7c7cb7071 Mon Sep 17 00:00:00 2001 From: Alexander Chernavin Date: Tue, 27 Sep 2022 10:15:04 +0000 Subject: [PATCH] net/virtio: fix crash when configured twice [ upstream commit 52bd03e969e9b38a7357287aece2488c7f92158f ] When first attempt to configure a device with RX interrupt enabled fails for some reason (e.g. because "Multiple intr vector not supported"), second attempt to configure the device with RX interrupt disabled and feature set unchanged will succeed but will leave virtio queues not allocated. Accessing the queues will cause a segfault. First attempt: - virtio_dev_configure() - virtio_init_device() is called to reinit the device because "dev->data->dev_conf.intr_conf.rxq" is "1" - virtio_configure_intr() fails and returns an error - virtio_free_queues() frees previously allocated virtio queues - virtio_init_device() fails and returns an error - virtio_dev_configure() fails and returns an error Second attempt: - virtio_dev_configure() - This time virtio_init_device() is not called, virtio queues are not allocated With this fix, reinit the device during configuration if virtio queues are not allocated. Fixes: 2b38151f745a ("net/virtio: fix queue memory leak on error") Signed-off-by: Alexander Chernavin Reviewed-by: Chenbo Xia --- drivers/net/virtio/virtio_ethdev.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index d180162abd..38bfe050b5 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -2617,4 +2617,11 @@ virtio_dev_configure(struct rte_eth_dev *dev) } + /* if queues are not allocated, reinit the device */ + if (hw->vqs == NULL) { + ret = virtio_init_device(dev, hw->req_guest_features); + if (ret < 0) + return ret; + } + if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) && !virtio_with_feature(hw, VIRTIO_NET_F_RSS)) { -- 2.37.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-10-25 14:18:59.974370371 +0100 +++ 0063-net-virtio-fix-crash-when-configured-twice.patch 2022-10-25 14:18:58.467798292 +0100 @@ -1 +1 @@ -From 52bd03e969e9b38a7357287aece2488c7f92158f Mon Sep 17 00:00:00 2001 +From 21c7ed77f11c2e7e08a38dd3813a1bf7c7cb7071 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 52bd03e969e9b38a7357287aece2488c7f92158f ] + @@ -30 +31,0 @@ -Cc: stable@dpdk.org @@ -39 +40 @@ -index 7e07270a8b..574f671158 100644 +index d180162abd..38bfe050b5 100644 @@ -42 +43 @@ -@@ -2618,4 +2618,11 @@ virtio_dev_configure(struct rte_eth_dev *dev) +@@ -2617,4 +2617,11 @@ virtio_dev_configure(struct rte_eth_dev *dev)