Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/87530/?format=api
http://patchwork.dpdk.org/api/patches/87530/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20210129073547.80108-1-hepeng.0320@bytedance.com/", "project": { "id": 1, "url": "http://patchwork.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20210129073547.80108-1-hepeng.0320@bytedance.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20210129073547.80108-1-hepeng.0320@bytedance.com", "date": "2021-01-29T07:35:47", "name": "lib/librte_vhost: fix vid allocation race", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "a8981e08ff91c8f70c4e3020e02b70fbc8a9d3f9", "submitter": { "id": 2088, "url": "http://patchwork.dpdk.org/api/people/2088/?format=api", "name": "贺鹏", "email": "xnhp0320@gmail.com" }, "delegate": { "id": 2642, "url": "http://patchwork.dpdk.org/api/users/2642/?format=api", "username": "mcoquelin", "first_name": "Maxime", "last_name": "Coquelin", "email": "maxime.coquelin@redhat.com" }, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20210129073547.80108-1-hepeng.0320@bytedance.com/mbox/", "series": [ { "id": 15030, "url": "http://patchwork.dpdk.org/api/series/15030/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=15030", "date": "2021-01-29T07:35:47", "name": "lib/librte_vhost: fix vid allocation race", "version": 1, "mbox": "http://patchwork.dpdk.org/series/15030/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/87530/comments/", "check": "fail", "checks": "http://patchwork.dpdk.org/api/patches/87530/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 50388A09E4;\n\tFri, 29 Jan 2021 10:45:44 +0100 (CET)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8907524015B;\n\tFri, 29 Jan 2021 10:45:32 +0100 (CET)", "from mail-pl1-f181.google.com (mail-pl1-f181.google.com\n [209.85.214.181])\n by mails.dpdk.org (Postfix) with ESMTP id 03F2140395\n for <dev@dpdk.org>; Fri, 29 Jan 2021 08:35:53 +0100 (CET)", "by mail-pl1-f181.google.com with SMTP id j11so2174743plt.11\n for <dev@dpdk.org>; Thu, 28 Jan 2021 23:35:52 -0800 (PST)", "from localhost ([61.120.150.71])\n by smtp.gmail.com with ESMTPSA id o14sm7138519pjf.12.2021.01.28.23.35.50\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 28 Jan 2021 23:35:51 -0800 (PST)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n h=from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=x//LGnjS9tV5afScQZZJfapVPBaAF8m0eLdk5PA+tMQ=;\n b=ipSFNoRb3I0QOH0zCYNeJz4OWHze9sylpx2SfLG59vFB1NYEgPzSTPMQ+OcRD0AUow\n 0mOlAgkjKjAupqWptXLKvH7Bx2NzvFKCM2ehK240UCCzw8iPox4h0z+sxM89Kqx4OOVZ\n VAcGvK7WWd0uxzGJ2IGPxgexAxLTI+Fo8dj0rjfjhCXBJOw73YWjaSW+Tkkut7hEsfLT\n bgaY7nZd/fFfhzaLesNxRuviu2SH7V0zQZqk9ZCDV5GpUorWouqGDISndIe1oJUZpyTZ\n lBaqfoO6ll9jnlv5PVKXjmYfG8gsAjNmKYnGYHYn5unOL37uUM2AmRjf1M3i/zYlC7/8\n RFjw==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=x//LGnjS9tV5afScQZZJfapVPBaAF8m0eLdk5PA+tMQ=;\n b=tSY1SLw0Twpjz26togcq9JZviVEYQtj77l2h3Io2LwZDdYwlROjZk3/ZYSF4AM7E3r\n ZZZsCiNO956W9IB+AL8P6g9xXV6T2Ua7NteaA20bkEwWt/og08xHC4J2zAyou/KnE95t\n eJd7AfCy4zsqHSMrdPLRbxYysJtqyrDqymK57RNKP1MokPRTm/aLGLhhtkLX+SpPjFk1\n pOb0vaGPYetSQ71YWbF/9XNqHyMt5oZdhm/dVy4ftE/t+KiuAj/IxE4M3zmcE0mmtYVe\n iGBFWfmVQFNRF7f+8Cbefl9XT9yLRfTS/H4z4UvYgsjAMIgFP/byjqXP4M9ADsOgfeRX\n dB2g==", "X-Gm-Message-State": "AOAM530W7Utq+hXFEwDmmfy5sLHE7yu0LUm28M0gwZ+BNZVJ3yuCa4iv\n N8Ff4NoE6QqY7vCMweCVM/GUiKw8YR2vfg==", "X-Google-Smtp-Source": "\n ABdhPJz+Yto8lyctmFD7aKbJgBNaUrQ45hmV+XNJ2R6bXBQXBEJ0yhSgBdPjbkiP2Lywb1wiJAOVpQ==", "X-Received": "by 2002:a17:90b:2286:: with SMTP id\n kx6mr3307163pjb.92.1611905751870;\n Thu, 28 Jan 2021 23:35:51 -0800 (PST)", "From": "Peng He <xnhp0320@gmail.com>", "X-Google-Original-From": "Peng He <hepeng.0320@bytedance.com>", "To": "dev@dpdk.org", "Cc": "maxime.coquelin@redhat.com", "Date": "Fri, 29 Jan 2021 15:35:47 +0800", "Message-Id": "<20210129073547.80108-1-hepeng.0320@bytedance.com>", "X-Mailer": "git-send-email 2.23.0", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Mailman-Approved-At": "Fri, 29 Jan 2021 10:45:28 +0100", "Subject": "[dpdk-dev] [PATCH] lib/librte_vhost: fix vid allocation race", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "From: \"chenwei.0515\" <chenwei.0515@bytedance.com>\n\nvhost_new_devcie might be called in different threads at the same time.\nthread 1(config thread)\n rte_vhost_driver_start\n ->vhost_user_start_client\n ->vhost_user_add_connection\n -> vhost_new_device\n\nthread 2(vhost-events)\n\tvhost_user_read_cb\n ->vhost_user_msg_handler (return value < 0)\n -> vhost_user_start_client\n -> vhost_new_device\n\nSo there could be a case that a same vid has been allocated twice, or\nsome vid might be lost in DPDK lib however still held by the upper\napplications.\n\nReported-by: Peng He <hepeng.0320@bytedance.com>\nSigned-off-by: Fei Chen <chenwei.0515@bytedance.com>\nReviewed-by: Zhihong Wang <wangzhihong.wzh@bytedance.com>\n---\n lib/librte_vhost/vhost.c | 6 ++++++\n 1 file changed, 6 insertions(+)", "diff": "diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c\nindex efb136edd1..db11d293d2 100644\n--- a/lib/librte_vhost/vhost.c\n+++ b/lib/librte_vhost/vhost.c\n@@ -26,6 +26,7 @@\n #include \"vhost_user.h\"\n \n struct virtio_net *vhost_devices[MAX_VHOST_DEVICE];\n+pthread_mutex_t vhost_dev_lock = PTHREAD_MUTEX_INITIALIZER;\n \n /* Called with iotlb_lock read-locked */\n uint64_t\n@@ -645,6 +646,7 @@ vhost_new_device(void)\n \tstruct virtio_net *dev;\n \tint i;\n \n+\tpthread_mutex_lock(&vhost_dev_lock);\n \tfor (i = 0; i < MAX_VHOST_DEVICE; i++) {\n \t\tif (vhost_devices[i] == NULL)\n \t\t\tbreak;\n@@ -653,6 +655,7 @@ vhost_new_device(void)\n \tif (i == MAX_VHOST_DEVICE) {\n \t\tVHOST_LOG_CONFIG(ERR,\n \t\t\t\"Failed to find a free slot for new device.\\n\");\n+\t\tpthread_mutex_unlock(&vhost_dev_lock);\n \t\treturn -1;\n \t}\n \n@@ -660,10 +663,13 @@ vhost_new_device(void)\n \tif (dev == NULL) {\n \t\tVHOST_LOG_CONFIG(ERR,\n \t\t\t\"Failed to allocate memory for new dev.\\n\");\n+\t\tpthread_mutex_unlock(&vhost_dev_lock);\n \t\treturn -1;\n \t}\n \n \tvhost_devices[i] = dev;\n+\tpthread_mutex_unlock(&vhost_dev_lock);\n+\n \tdev->vid = i;\n \tdev->flags = VIRTIO_DEV_BUILTIN_VIRTIO_NET;\n \tdev->slave_req_fd = -1;\n", "prefixes": [] }{ "id": 87530, "url": "