From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C3F82A09E0; Fri, 11 Dec 2020 17:15:10 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3EB92C968; Fri, 11 Dec 2020 17:15:06 +0100 (CET) Received: from mail-m974.mail.163.com (mail-m974.mail.163.com [123.126.97.4]) by dpdk.org (Postfix) with ESMTP id E489AAC9C for ; Fri, 11 Dec 2020 17:15:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=cR9hzkn9X+DhkEHyPT 0q14fT4V3N4vt2dJCYC1eugqU=; b=Z0s4z6Fmi1gbAlrhqZYcifVMEUOsGdwcb3 fCvc2hCJHHGK/O7++2TciO15Cf6+Lw5/lIuSl0iE6mFTgUhIcgr0g9RuJhk7owfR hnOgOCBb5eKEgnwTg7tvIHKkOiSxBaLR+KNoSTzone1/6XYd8mJrHv9RoZgt+gv8 QUcddR8QQ= Received: from ecs-5dae.localdomain (unknown [119.8.186.164]) by smtp4 (Coremail) with SMTP id HNxpCgD3_S3+mtNf0VVncA--.40722S2; Sat, 12 Dec 2020 00:14:56 +0800 (CST) From: Jiawei Zhu <17826875952@163.com> To: dev@dpdk.org Cc: liweifeng2@huawei.com, zhujiawei12@huawei.com, maxime.coquelin@redhat.com, chenbo.xia@intel.com Date: Sat, 12 Dec 2020 00:14:53 +0800 Message-Id: <1607703293-6121-1-git-send-email-17826875952@163.com> X-Mailer: git-send-email 1.8.3.1 X-CM-TRANSID: HNxpCgD3_S3+mtNf0VVncA--.40722S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxJr18ZF1rWryxAr4kCF1rJFb_yoW8GF43pF 4UuFZ3Xry7Gry2k3WrJ3WDWa45Zas3Gw47Gr95Xwn5CrZ5Ar15ArW8Aa4Ykr17AryDAFW7 tr109a45trZxuaUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UXBMiUUUUU= X-Originating-IP: [119.8.186.164] X-CM-SenderInfo: bprxmjywyxkmivs6il2tof0z/1tbiqgD39lr7rMJr3AAAsT Subject: [dpdk-dev] [PATCH v2] net/virtio-user: fix run close(0) and close callfd X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Jiawei Zhu When i < VIRTIO_MAX_VIRTQUEUES and j == i, dev->callfds[i] and dev->kickfds[i] are default 0. So it will close(0), close the standard input (stdin). And when the code fails in kickfd creationg, it will leaves one callfd not closed. Fixes: e6e7ad8b3024 ("net/virtio-user: move eventfd open/close into init/uninit") Cc: stable@dpdk.org: Signed-off-by: Jiawei Zhu <17826875952@163.com> --- v2: * Add close callfd when fail in kickfd creation before break. --- --- drivers/net/virtio/virtio_user/virtio_user_dev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c index 053f026..e1cbad0 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c @@ -276,6 +276,7 @@ int virtio_user_stop_device(struct virtio_user_dev *dev) } kickfd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); if (kickfd < 0) { + close(callfd); PMD_DRV_LOG(ERR, "kickfd error, %s", strerror(errno)); break; } @@ -284,7 +285,7 @@ int virtio_user_stop_device(struct virtio_user_dev *dev) } if (i < VIRTIO_MAX_VIRTQUEUES) { - for (j = 0; j <= i; ++j) { + for (j = 0; j < i; ++j) { close(dev->callfds[j]); close(dev->kickfds[j]); } -- 1.8.3.1