From patchwork Fri Jan 11 18:06:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 49744 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0F3AA1BA9F; Fri, 11 Jan 2019 19:07:13 +0100 (CET) Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id E99F11BA5D for ; Fri, 11 Jan 2019 19:07:09 +0100 (CET) Received: by mail-pf1-f195.google.com with SMTP id c123so7314169pfb.0 for ; Fri, 11 Jan 2019 10:07:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3jy7govgnPBh/UdVsLMdONS7fzcZtfkBNVeTrmXFXdE=; b=ULN4CqzZPb077rzSAHJjvDEwgOdofoQ5zUHqnXWiEizMyfOI1BHQtqkPAxQNXFf+Ma UqOobRadttTYwi8US6fGc7ePbgb/MHLpaUZVmcuysxK3JAHg3ZzCN3uuW20vTcrDxY0L DCnOU3HnPA+J4e91nEwtYqUJc1ZZTKBVpIHqH3aFBkih1OJan28o3GpjrK+qI569c0Yb S8TouDWZTThe/VGdBDeGRccyHgp9vOegXLoQhAaGY2i4lhwuLpFkPno/ZPHdiSDvAmKs iQYLHiFpxh8gm/eoUrAx+VFOP8AQ4UiT2APTlgw4WA+wcMu8QSlywPpFKLBfDFZr1lFk +Nrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3jy7govgnPBh/UdVsLMdONS7fzcZtfkBNVeTrmXFXdE=; b=iv5c/9xG0+RtlNcCVpbd3NVFfBkHdHLAk9XxR467vbTleoTb1eKjl9ZJgw8Ezflqs7 FWNAt9BJCW93BL/iYmjNnH8aRaHydGShiJ1TPWi1I5wUTwIOs/sbbHoISeRlz6uXfbCc H3A4vo8pi4mtomMYeHt57KPaQmh8Tzu0X7d0t6EtXGSKepbrbpFjq+JZIkvdEbTnPFLa K4O8WGhJLhnzZrTTrRxVz6SbItVq1glGSxchaeJ9SZOKIqCrmy0v/kl+MQoJqtMtEZKz nJY+34uFq6kBMHlUcl94Hg0h1E/b+0e7sKJrfXuXIfmNJV+AButNOU99lokngs1Wg6Um FY9g== X-Gm-Message-State: AJcUukdGbwYqs+PGmwswrdPtHC/IGnF46boLwkNOIeneG3obr+fVjjE0 mRH6HPb67NdTnLqXGZuhlhoNqzQ9WVc= X-Google-Smtp-Source: ALg8bN49PA9cP7Rr1PYFflgQasC3M9VmpLUuGhIKW9mcG85nZ6n8/heBGZwqKdqoLm+JWHMy/svA3w== X-Received: by 2002:a65:47ca:: with SMTP id f10mr14538469pgs.166.1547230028600; Fri, 11 Jan 2019 10:07:08 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id n186sm107213303pfn.137.2019.01.11.10.07.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Jan 2019 10:07:07 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 11 Jan 2019 10:06:54 -0800 Message-Id: <20190111180659.5972-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190111180659.5972-1-stephen@networkplumber.org> References: <20190111180659.5972-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 1/6] net/tap: use strlcpy for interface name 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" snprintf is not needed here, use strlcpy instead. Signed-off-by: Stephen Hemminger --- drivers/net/tap/rte_eth_tap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 0ec030bef63c..1c00681ba0eb 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -148,7 +148,7 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive) */ ifr.ifr_flags = (pmd->type == ETH_TUNTAP_TYPE_TAP) ? IFF_TAP : IFF_TUN | IFF_POINTOPOINT; - snprintf(ifr.ifr_name, IFNAMSIZ, "%s", pmd->name); + strlcpy(ifr.ifr_name, pmd->name, IFNAMSIZ); TAP_LOG(DEBUG, "ifr_name '%s'", ifr.ifr_name); From patchwork Fri Jan 11 18:06:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 49745 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9FF861BACB; Fri, 11 Jan 2019 19:07:15 +0100 (CET) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by dpdk.org (Postfix) with ESMTP id BFE0E1BA5D for ; Fri, 11 Jan 2019 19:07:10 +0100 (CET) Received: by mail-pg1-f194.google.com with SMTP id v28so6610237pgk.10 for ; Fri, 11 Jan 2019 10:07:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Nc8zRGyPtW/t+tplyof8ipbsovJluggymrj+iLyqHOU=; b=BpOpDKZvFe7K4Q1tNEVFEcbEvqCeDru/x3lTdDgnrZ8JsWa8uQLmDlemBrtyXA1HZc 3cZ/lM0sjEv41y26HSH8jFffKlVmNUkyIbLGqn8Isedt4/UrdF1ytm+2QveIcK++Rvyx 2hgQM7V2dRbqNr305cMo8LOV2SK5Rja2XnhHmvidj8XiS7SwmQupt+/WYtE9vk2rQ7ux fgVlmry6zABfSype0lU09EoSDKt6puRh0BDKahk4xftl2w9xmTffa1BCnalFuTD1b3DS tu30Fcy7CPt9d52etPmiDN2Q4wkbc/X3N+Q/sXX8Uc0Feg1tqgMtTfEIWm1kzjbt5CCI JgjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Nc8zRGyPtW/t+tplyof8ipbsovJluggymrj+iLyqHOU=; b=t5jQI6kqO8QISRY9su+aQINs7mdsZ6GowlKHY5wl358nn7ZHsXk31iwlEpaE1DvbkS nfl4EUhiGJAVb0NvtHelP4ePluBJeup1d6f/lACem8AlZCwNptJObDTYN6Ergljtc0XB n/YMqQPIib6+s7BTjHgFO51zzUKSHyDFJiQWfF+8dX3wLlBGLPLE26zeK0g1lICwqKDh EeIhFujH2n5Mawk7y2uYhpxl5je+yrSPqxxZnk+DEKO7OSuicey2l2Djf1fW/bQwdQSt 8exemh+BLNUM8mfWO9ITc4bDjdH5qQ3QWto9BKP9yxZpgHsXatOisBuTLvhLfOIsZUbp rwPw== X-Gm-Message-State: AJcUukfBIx0yGU7GwgcetloghtS1mrfI0mey0vgo5bczhcUxjS1QHp+A UQOnUoC9ifLmzdZHz4aKzUyzjzC6ErE= X-Google-Smtp-Source: ALg8bN5cT5qJ2pPgt9LDU+PSorFUC8QvLFzvKcH0LJcLCaZyklyBZPXDHDqQQ14ozatH9ayFOjN62Q== X-Received: by 2002:a63:e74b:: with SMTP id j11mr7630092pgk.397.1547230029392; Fri, 11 Jan 2019 10:07:09 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id n186sm107213303pfn.137.2019.01.11.10.07.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Jan 2019 10:07:08 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 11 Jan 2019 10:06:55 -0800 Message-Id: <20190111180659.5972-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190111180659.5972-1-stephen@networkplumber.org> References: <20190111180659.5972-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 2/6] net/tap: allow full length names 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" The code for set_interface_name was incorrectly assuming that space for null byte was necessary with snprintf/strlcpy. Fixes: 02f96a0a82d1 ("net/tap: add TUN/TAP device PMD") Signed-off-by: Stephen Hemminger --- drivers/net/tap/rte_eth_tap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 1c00681ba0eb..d7f77d664502 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1892,10 +1892,10 @@ set_interface_name(const char *key __rte_unused, char *name = (char *)extra_args; if (value) - strlcpy(name, value, RTE_ETH_NAME_MAX_LEN - 1); + strlcpy(name, value, RTE_ETH_NAME_MAX_LEN); else - snprintf(name, RTE_ETH_NAME_MAX_LEN - 1, "%s%d", - DEFAULT_TAP_NAME, (tap_unit - 1)); + snprintf(name, RTE_ETH_NAME_MAX_LEN, "%s%d", + DEFAULT_TAP_NAME, tun_unit - 1); return 0; } From patchwork Fri Jan 11 18:06:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 49746 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3B0961BADD; Fri, 11 Jan 2019 19:07:17 +0100 (CET) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by dpdk.org (Postfix) with ESMTP id BA8B21BA83 for ; Fri, 11 Jan 2019 19:07:11 +0100 (CET) Received: by mail-pf1-f196.google.com with SMTP id i12so7297236pfo.7 for ; Fri, 11 Jan 2019 10:07:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OnIijkWFM48+8790vJHj6LYQ6HgJunH3QAcQ5Xu8RJA=; b=oy/00x/ROgL6aEgSkyxruCufKStuZ5GcFGOKmLrAEDj2sJAUx7cM4EKhdumVbqZMwL 2N+nlvcM3WZGo/5w9RetLaFDRVfM8re+uLRrb7HNoHprI1E23TT67tS2JHMfx1j0bnZB ZoLSeSEBGqPqJwxntXuyJj5ZSy2/GP2po7OuvAlUQF0/gB0wnN+G+PS857gYO418sD8k XhpTANIA4TrOQB80LCPunqw0tGPxLftpy8UjUgKtuGXorIzDxX11a1VH5mpOLbvZMIRO B72jPkaoaj4VLy/77TD+FAhSwvqWApkRCxJPQykJ8UJB0hlSe04gFtK+bz++ozGQA88r dVVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OnIijkWFM48+8790vJHj6LYQ6HgJunH3QAcQ5Xu8RJA=; b=YMqMuJ3rZCe/HN1pwzjaR8dD0qnuc/6Ou3MOp8yMoxPE8f5Ts9EFrIYJHNd9TZKbWO a8W0i6XB+qOYTcBjVoxXKNYQYF2ARJb8Nc3XJ6rFyf20uvhxQoWMEPdExpyk9mCE4+uN P427zrJE2b2qQqpIkNuW22amneKKUynj0z/Dl3mZJUZWhzXOqPJFa30b+flGnJTUF8cp Vbms8EskBlm0fhI1IrjwkKHtJi6EPNSVTHZ9EXOCXoqcxzcnExjyV0PuV+MrsWPSC7mj XYoGvxyg8oWpOnoZls4K55t7G8iR6Rdt4568ilrstY1u63b+lhr6gktUFb92uBSxfLWq S1gw== X-Gm-Message-State: AJcUukd6t0rX4ODKo3gv9B9wSIjlcKKIYPg0OOYXxP01p/qKfgGffRAg DT84aquOhxiuG8wR3tNWOTJpnONTVEg= X-Google-Smtp-Source: ALg8bN5QNVM1mpO1mQCOmlhc+LKLdGzhtNzV+1XBC0jHeIrYOC/aQwo3wPA2qdh4wcV+ftMGeJ0iqg== X-Received: by 2002:a63:8c0d:: with SMTP id m13mr14391479pgd.422.1547230030258; Fri, 11 Jan 2019 10:07:10 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id n186sm107213303pfn.137.2019.01.11.10.07.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Jan 2019 10:07:09 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 11 Jan 2019 10:06:56 -0800 Message-Id: <20190111180659.5972-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190111180659.5972-1-stephen@networkplumber.org> References: <20190111180659.5972-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 3/6] net/tap: check interface name in kvargs 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" If interface name is passed to remote or iface then check the length and for invalid characters. This avoids problems where name gets truncated or rejected by kernel. Signed-off-by: Stephen Hemminger --- drivers/net/tap/rte_eth_tap.c | 37 +++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index d7f77d664502..6a388eed0dd4 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -1884,6 +1885,23 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, return -EINVAL; } +/* make sure name is a possible Linux network device name */ +static bool is_valid_iface(const char *name) +{ + if (*name == '\0') + return false; + + if (strnlen(name, IFNAMSIZ) == IFNAMSIZ) + return false; + + while (*name) { + if (*name == '/' || *name == ':' || isspace(*name)) + return false; + name++; + } + return true; +} + static int set_interface_name(const char *key __rte_unused, const char *value, @@ -1891,12 +1909,17 @@ set_interface_name(const char *key __rte_unused, { char *name = (char *)extra_args; - if (value) + if (value) { + if (!is_valid_iface(value)) { + TAP_LOG(ERR, "TAP invalid remote interface name (%s)", + value); + return -1; + } strlcpy(name, value, RTE_ETH_NAME_MAX_LEN); - else + } else { snprintf(name, RTE_ETH_NAME_MAX_LEN, "%s%d", DEFAULT_TAP_NAME, tun_unit - 1); - + } return 0; } @@ -1907,8 +1930,14 @@ set_remote_iface(const char *key __rte_unused, { char *name = (char *)extra_args; - if (value) + if (value) { + if (!is_valid_iface(value)) { + TAP_LOG(ERR, "TAP invalid remote interface name (%s)", + value); + return -1; + } strlcpy(name, value, RTE_ETH_NAME_MAX_LEN); + } return 0; } From patchwork Fri Jan 11 18:06:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 49747 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BC1CA1BB06; Fri, 11 Jan 2019 19:07:18 +0100 (CET) Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by dpdk.org (Postfix) with ESMTP id 9684E1BA83 for ; Fri, 11 Jan 2019 19:07:12 +0100 (CET) Received: by mail-pg1-f177.google.com with SMTP id j10so6636192pga.1 for ; Fri, 11 Jan 2019 10:07:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RvekxTj7hg0PP6GoiN57e85stHD0W1CvQyV20y7ZWGU=; b=sGurwr0EPjJiokldzHmZl1v3/6/OaGmGPCiqbNcCUAQrwQ2YW5uzWzVDJNiI4xat/G RMYF/mXj+sUq27GjF7w/+NjR0YE4Ypeuo0bYvBunkIQMq6XSJUwm8ba4FqIvtzcmKNUb 91wfpn40jJ7RDrFDIhq24jBB+aphjLB1gTrW7bsNJ2RBnF1oRwIlWT4XJNYmQp8c/bXX wIWDqP5H7YKhpXZJI4ISS4UmXORvtYaMaOBU9o9ZusxqVk/zifYSq73opEj4mRpI315n G+LkDfVySkGIpUn/8OyaHmPmGBB+ok5GkCyaHhwo8eWQDBIwuGoaHzC7Sf78JlFZoHXK cb3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RvekxTj7hg0PP6GoiN57e85stHD0W1CvQyV20y7ZWGU=; b=Q3Xg65RA3ymGU08JM1zw/QMiSvotiRh6lvrFDk1Lrc0cMUp+NF/eOpz1SRko86Zc6Z lNp0dKBH4EKn9Sja+/Krncvr9LCzO1ZQdVMSJAJ5P9MOWT7BkVqohC4sy6w7931AceAv sKqd+wsN4NFT6Tj60Oe7KtildaS00FIsOlBb4GwSc3u1t2EflAqOfbBukXHWAzLBN2tJ RQpCSF84aUhFz2Vh8C2JQiX+5tTj+xU+gmjpc+hBp7NMG6tQXcvmfCyo6A7yAz5JoDFF ylJ5wWUgCghgk1Bhz8CzdNX5HDjXM7Xm8lx6rkMkzSKr9f4BsJA/rqDzPA6pGKugbAsU odLw== X-Gm-Message-State: AJcUukcSeWMtcedk6eMNawznrtw/m4XDd/ZZd1dx669ColyvqiOeJsNi TNZnNzH2T586Ugsc5Sw+LW7MmotwoVc= X-Google-Smtp-Source: ALg8bN4NM/nbc6nt//ozRymjr8YQqXmYht0cs1dko6CkgMv73zWuNDzv/3ckJBJIyebegI0Y6RnuPA== X-Received: by 2002:a62:4e83:: with SMTP id c125mr15672977pfb.101.1547230031201; Fri, 11 Jan 2019 10:07:11 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id n186sm107213303pfn.137.2019.01.11.10.07.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Jan 2019 10:07:10 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 11 Jan 2019 10:06:57 -0800 Message-Id: <20190111180659.5972-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190111180659.5972-1-stephen@networkplumber.org> References: <20190111180659.5972-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 4/6] net/tap: lower the priority of log messages 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" Any messages that normally occur during probe should be at DEBUG level (not NOTICE). This reduces overall log clutter. Signed-off-by: Stephen Hemminger --- drivers/net/tap/rte_eth_tap.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 6a388eed0dd4..50d6729cb609 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -2052,7 +2052,7 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) } pmd_link.link_speed = ETH_SPEED_NUM_10G; - TAP_LOG(NOTICE, "Initializing pmd_tun for %s as %s", + TAP_LOG(DEBUG, "Initializing pmd_tun for %s as %s", name, tun_name); ret = eth_dev_tap_create(dev, tun_name, remote_iface, 0, @@ -2257,8 +2257,7 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev) } pmd_link.link_speed = speed; - TAP_LOG(NOTICE, "Initializing pmd_tap for %s as %s", - name, tap_name); + TAP_LOG(DEBUG, "Initializing pmd_tap for %s", name); /* Register IPC feed callback */ if (!tap_devices_count) { From patchwork Fri Jan 11 18:06:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 49748 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EA1EB1BB15; Fri, 11 Jan 2019 19:07:19 +0100 (CET) Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id 43E281BAB5 for ; Fri, 11 Jan 2019 19:07:13 +0100 (CET) Received: by mail-pf1-f195.google.com with SMTP id c73so7283027pfe.13 for ; Fri, 11 Jan 2019 10:07:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iYercn/9dovQc4ZsrI8Aq+pLR0u7zsthimC3WBnn2XQ=; b=vOeJUiZeHgu+LKI9dhHdDRVRzVS5W9DnZiUVr0uw/c6jdgtdW+BZCK2fZez6c6AJxb BKrNFeOepKBxhs+taaT7z3KZjqHobP46LCpdcDPfmlaQ06GD9o/o/ky9E06mxJtW3Yle nmNMhvdIIT/2xgjt0n6T0jWxO+ZAZ4f1CpH8UVjVbio6khbjRK/2Aw73SrnWCIZeFNW9 g/o2WbC1A/4mF7de1ISFA7SPkNJsNpQxcEBqZ+4uyfBgE0Nm2LUZmYNbpmj4fa9s5CVa 2Wh2RZ20jlmlSc14CsCOPZzTv+pc90RLiPnKHPnFKlKLORw5C8ICTeEigBbsXnSVBdrE jm7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iYercn/9dovQc4ZsrI8Aq+pLR0u7zsthimC3WBnn2XQ=; b=LfsVSfLkfpagdDFtSZyUM3Nojey4fnDMzk6LnTAILCvFVLHhPUBknQzCd5vV1vQzm4 p5OxwP8lIsNLODL18QLUZzQRDpP4Jsdafq1jltoZ3QW9BhlIvf95dW/2t2Wrb0rPPdn2 Ba/94goc4KvdFMGMENhkpf6IzUQCoHBfw6N57K9cD8Ie+q46jeOv2THUHUust9MakZMZ TVqPSp6qxJ9CTc5UXUOQbr7AlMs1cPZAlFYNGkM4teWIbA3avpd6sAxkc5neRH2PJbjq mq8FdgjW9gPi4gAj/2nI/Z/bVspNSDfeOmtmPQzSwEW9BeuFH7a+P8Dsml+5iBJG8eLu 5+8A== X-Gm-Message-State: AJcUukdG/BMmvxFFYIlIW+j9XtC6CrjdJJhJhKj52XGXeqErNkUMe1pS 5u3i7gzHvJwzxOiQbAg/1OkWVhilKlI= X-Google-Smtp-Source: ALg8bN4w8kg+QT6XqfBnLTz+YNaWT/U82HWCXO9HmJEG5TN01TynsY/u0HKBrSVXEPmwyNM8EhPJ9Q== X-Received: by 2002:a65:520a:: with SMTP id o10mr14684791pgp.276.1547230032093; Fri, 11 Jan 2019 10:07:12 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id n186sm107213303pfn.137.2019.01.11.10.07.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Jan 2019 10:07:11 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , hfli@netitest.com Date: Fri, 11 Jan 2019 10:06:58 -0800 Message-Id: <20190111180659.5972-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190111180659.5972-1-stephen@networkplumber.org> References: <20190111180659.5972-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 5/6] net/tap: let kernel choose tun device name 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" Assigning tun and tap index in DPDK tap device driver is racy and fails if used with primary/secondary process model. Instead, use the kernel feature of device wildcarding where if a name with %d is used the kernel will fill in the next available device. Reported-by: hfli@netitest.com Fixes: 02f96a0a82d1 ("net/tap: add TUN/TAP device PMD") Signed-off-by: Stephen Hemminger --- drivers/net/tap/rte_eth_tap.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 50d6729cb609..b836c1ae3d4e 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -79,9 +79,6 @@ static const char *valid_arguments[] = { NULL }; -static unsigned int tap_unit; -static unsigned int tun_unit; - static char tuntap_name[8]; static volatile uint32_t tap_trigger; /* Rx trigger */ @@ -151,8 +148,6 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive) IFF_TAP : IFF_TUN | IFF_POINTOPOINT; strlcpy(ifr.ifr_name, pmd->name, IFNAMSIZ); - TAP_LOG(DEBUG, "ifr_name '%s'", ifr.ifr_name); - fd = open(TUN_TAP_DEV_PATH, O_RDWR); if (fd < 0) { TAP_LOG(ERR, "Unable to create %s interface", tuntap_name); @@ -186,6 +181,13 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive) goto error; } + /* + * Name passed to kernel might be wildcard like dtun%d + * and need to find the resulting device. + */ + TAP_LOG(DEBUG, "Device name is '%s'", ifr.ifr_name); + strlcpy(pmd->name, ifr.ifr_name, RTE_ETH_NAME_MAX_LEN); + if (is_keepalive) { /* * Detach the TUN/TAP keep-alive queue @@ -1756,6 +1758,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, TAP_LOG(ERR, "Unable to create %s interface", tuntap_name); goto error_exit; } + TAP_LOG(INFO, "allocated %s", pmd->name); ifr.ifr_mtu = dev->data->mtu; if (tap_ioctl(pmd, SIOCSIFMTU, &ifr, 1, LOCAL_AND_REMOTE) < 0) @@ -1917,8 +1920,8 @@ set_interface_name(const char *key __rte_unused, } strlcpy(name, value, RTE_ETH_NAME_MAX_LEN); } else { - snprintf(name, RTE_ETH_NAME_MAX_LEN, "%s%d", - DEFAULT_TAP_NAME, tun_unit - 1); + snprintf(name, RTE_ETH_NAME_MAX_LEN, "%s%%d", + DEFAULT_TAP_NAME); } return 0; } @@ -2031,8 +2034,8 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) return 0; } - snprintf(tun_name, sizeof(tun_name), "%s%u", - DEFAULT_TUN_NAME, tun_unit++); + snprintf(tun_name, sizeof(tun_name), "%s%%d", + DEFAULT_TUN_NAME); if (params && (params[0] != '\0')) { TAP_LOG(DEBUG, "parameters (%s)", params); @@ -2052,17 +2055,15 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) } pmd_link.link_speed = ETH_SPEED_NUM_10G; - TAP_LOG(DEBUG, "Initializing pmd_tun for %s as %s", - name, tun_name); + TAP_LOG(DEBUG, "Initializing pmd_tun for %s", name); ret = eth_dev_tap_create(dev, tun_name, remote_iface, 0, - ETH_TUNTAP_TYPE_TUN); + ETH_TUNTAP_TYPE_TUN); leave: if (ret == -1) { TAP_LOG(ERR, "Failed to create pmd for %s as %s", name, tun_name); - tun_unit--; /* Restore the unit number */ } rte_kvargs_free(kvlist); @@ -2218,8 +2219,8 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev) } speed = ETH_SPEED_NUM_10G; - snprintf(tap_name, sizeof(tap_name), "%s%u", - DEFAULT_TAP_NAME, tap_unit++); + snprintf(tap_name, sizeof(tap_name), + "%s%%d", DEFAULT_TAP_NAME); memset(remote_iface, 0, RTE_ETH_NAME_MAX_LEN); if (params && (params[0] != '\0')) { @@ -2282,7 +2283,6 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev) rte_mp_action_unregister(TAP_MP_KEY); tap_devices_count--; } - tap_unit--; /* Restore the unit number */ } rte_kvargs_free(kvlist); From patchwork Fri Jan 11 18:06:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 49749 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5475B1BB2A; Fri, 11 Jan 2019 19:07:21 +0100 (CET) Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id BA7B71BAB9 for ; Fri, 11 Jan 2019 19:07:14 +0100 (CET) Received: by mail-pf1-f195.google.com with SMTP id 64so7288162pfr.9 for ; Fri, 11 Jan 2019 10:07:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iSxJV+QCE/LVqCt2kIdQMbHRKpDI+jwjwC5QbRW/QO8=; b=LQ3hr7mnK6+T+op+y0vHRK7Ty4WaVmDim8ZB92qME4ZXJYCj+/z8dja7hH9OQic1lf NlM3qHI8NIs9ud7IWiLw+65nreC0dW+mGd2jTQ14EVSsyswDAy09PHcjzXZMLyYl6AC0 vUyQhjTvC26zPL7DibNj81rvyWYLukkN5hWPzkVgHKUF+05RI1dcT+QBWRaN97Pr8uAJ Xn1CmMY41K619CIR2htqfGjfixwP9CGyI42s3E6EIvfiCFTCBGRsnq5LrmbpkTmtgQsA J+4lS73tw6rcmzE+pF9XVhYK+5g53q7JIzWKx/+PHCo63FHHKhxQTZ9Ig0p7YOlOhqrx udrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iSxJV+QCE/LVqCt2kIdQMbHRKpDI+jwjwC5QbRW/QO8=; b=XnDdCT9IiXVDCmEpuf4PO+rlaDqnZmJ4JTxKQ5jJ4AY9sNtY55PFIGwBrWEFs4Y2Lm zi/rJgICSuxSHVltArRPyOL1s2MxWWyFbTqtcEZcPtc91KfsvPgq28pG/tRWr+j8aztl 0o5J/L3v925DOefSkCfSIasGvdIrh8Fl9dvxhx6QEcH2RKGNbkFBpbZtBWJH8KUlcNU8 m7AlHNMiU3mEa6UpTTVnK+CyNAM0CeXM6ivobWYm96atoinIntJCdxCTsAUIg1Cg2ARw UZnt6URahGTriseowR5l91U6DrAJkLXbfj4dxSdfFTHloQ2Kog2XPPHiuCp4aemOsR8P C8FA== X-Gm-Message-State: AJcUukfvQ/C7nSO50anBNr6tmDVhnZQU7EdQQQXO498r/I9NrXiKZNLB 8LF8WdxYR/Uz8D43tvCVOJjBfoQezLg= X-Google-Smtp-Source: ALg8bN4zL43e1CvRR1au5zS6cZ+F1br3OdBY2Ra2K/11aisUPjsyG2RmG8z5DsvjO83WtmLJcYK72g== X-Received: by 2002:a63:4926:: with SMTP id w38mr13686616pga.353.1547230033677; Fri, 11 Jan 2019 10:07:13 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id n186sm107213303pfn.137.2019.01.11.10.07.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Jan 2019 10:07:12 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 11 Jan 2019 10:06:59 -0800 Message-Id: <20190111180659.5972-7-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190111180659.5972-1-stephen@networkplumber.org> References: <20190111180659.5972-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 6/6] net/tap: get rid of global tuntap_name 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" Having a global variable which is set to "TUN" or "TAP" during probe is a potential bug if probing is ever done in different processes or contexts. Let's fix it now by using existing enum that has type of connection. Signed-off-by: Stephen Hemminger --- drivers/net/tap/rte_eth_tap.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index b836c1ae3d4e..0069930819c2 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -79,8 +79,6 @@ static const char *valid_arguments[] = { NULL }; -static char tuntap_name[8]; - static volatile uint32_t tap_trigger; /* Rx trigger */ static struct rte_eth_link pmd_link = { @@ -150,18 +148,17 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive) fd = open(TUN_TAP_DEV_PATH, O_RDWR); if (fd < 0) { - TAP_LOG(ERR, "Unable to create %s interface", tuntap_name); + TAP_LOG(ERR, "Unable to open %s interface", TUN_TAP_DEV_PATH); goto error; } #ifdef IFF_MULTI_QUEUE /* Grab the TUN features to verify we can work multi-queue */ if (ioctl(fd, TUNGETFEATURES, &features) < 0) { - TAP_LOG(ERR, "%s unable to get TUN/TAP features", - tuntap_name); + TAP_LOG(ERR, "unable to get TUN/TAP features"); goto error; } - TAP_LOG(DEBUG, "%s Features %08x", tuntap_name, features); + TAP_LOG(DEBUG, "%s Features %08x", TUN_TAP_DEV_PATH, features); if (features & IFF_MULTI_QUEUE) { TAP_LOG(DEBUG, " Multi-queue support for %d queues", @@ -1668,8 +1665,12 @@ static const struct eth_dev_ops ops = { .filter_ctrl = tap_dev_filter_ctrl, }; +static const char *tuntap_types[ETH_TUNTAP_TYPE_MAX] = { + "UNKNOWN", "TUN", "TAP" +}; + static int -eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, +eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name, char *remote_iface, struct ether_addr *mac_addr, enum rte_tuntap_type type) { @@ -1677,12 +1678,12 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, struct rte_eth_dev *dev; struct pmd_internals *pmd; struct pmd_process_private *process_private; + const char *tuntap_name = tuntap_types[type]; struct rte_eth_dev_data *data; struct ifreq ifr; int i; - TAP_LOG(DEBUG, "%s device on numa %u", - tuntap_name, rte_socket_id()); + TAP_LOG(DEBUG, "%s device on numa %u", tuntap_name, rte_socket_id()); dev = rte_eth_vdev_allocate(vdev, sizeof(*pmd)); if (!dev) { @@ -2015,8 +2016,6 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) char remote_iface[RTE_ETH_NAME_MAX_LEN]; struct rte_eth_dev *eth_dev; - strcpy(tuntap_name, "TUN"); - name = rte_vdev_device_name(dev); params = rte_vdev_device_args(dev); memset(remote_iface, 0, RTE_ETH_NAME_MAX_LEN); @@ -2181,8 +2180,6 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev) struct rte_eth_dev *eth_dev; int tap_devices_count_increased = 0; - strcpy(tuntap_name, "TAP"); - name = rte_vdev_device_name(dev); params = rte_vdev_device_args(dev); @@ -2264,8 +2261,8 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev) if (!tap_devices_count) { ret = rte_mp_action_register(TAP_MP_KEY, tap_mp_sync_queues); if (ret < 0) { - TAP_LOG(ERR, "%s: Failed to register IPC callback: %s", - tuntap_name, strerror(rte_errno)); + TAP_LOG(ERR, "tap: Failed to register IPC callback: %s", + strerror(rte_errno)); goto leave; } } @@ -2314,8 +2311,7 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev) process_private = eth_dev->process_private; TAP_LOG(DEBUG, "Closing %s Ethernet device on numa %u", - (internals->type == ETH_TUNTAP_TYPE_TAP) ? "TAP" : "TUN", - rte_socket_id()); + tuntap_types[internals->type], rte_socket_id()); if (internals->nlsk_fd) { tap_flow_flush(eth_dev, NULL);