From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30042.outbound.protection.outlook.com [40.107.3.42]) by dpdk.org (Postfix) with ESMTP id 2A413CFBA for ; Tue, 5 Jun 2018 02:41:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DXiNvJcEXcuq4Zc9wRvSRhkDNMHHkry17Dt/AVgRSc0=; b=GZamXQ6fkuyxgdE/4fv2QC5Sg4jBlbjQidzDNM/9ap1u+i5mwAGReic0CdoiyOdJ8a/+Vd8WC5C9AW6eWKFeyN24bi9yJQY1wNO0QvbiSlLmaBbOJTiNRkbMoLK3zHl5ceZL3kXTTNWk1VWYzE20qzRptM7LB0YVYB8tZTQgde8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by VI1PR0501MB2045.eurprd05.prod.outlook.com (2603:10a6:800:36::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.11; Tue, 5 Jun 2018 00:41:04 +0000 From: Yongseok Koh To: yliu@fridaylinux.org Cc: stable@dpdk.org, shahafs@mellanox.com, adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com Date: Mon, 4 Jun 2018 17:40:21 -0700 Message-Id: <20180605004029.14593-2-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180605004029.14593-1-yskoh@mellanox.com> References: <20180605002732.13866-1-yskoh@mellanox.com> <20180605004029.14593-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: BYAPR07CA0013.namprd07.prod.outlook.com (2603:10b6:a02:bc::26) To VI1PR0501MB2045.eurprd05.prod.outlook.com (2603:10a6:800:36::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2045; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 3:UieoCE2QBa3ELeVu/h4/sNuX7e3ANbgrq3ITgZWpdc3XH7vTZx/DlnuUEzCqlISmI9V7r2Rtc5m9fWtXZJhASaR62oL6llFq0iECgjLOaYuPHf2a7HaAukFOw+AK+nUAhDQ5KuDzrzFy5bg85cxR/PMLUFfVQXItCZcdacjBO+NNAYHQgYb0byFds8yOmhyQF4wdTXOkceNL3Y9GeBp1XLj+hJXaGpn3IRxXJAKWDSeyrY++EbefAyw9+Rjekx2I; 25:0vDjhhYWMpSSKhWSMrlFO/j6lmcHAN/AKdQdG2cciZvoQ/i+XICgERK1EjprdrTG0BCKUST9jPJ4DjqK3C+6vpgndv4zb9YD0MTgijUsNyoLlMOPEU51ud7rhIpTZixQWOvjOmE3Vi3VzVtsiEryfN5rrKFya88HvWRbMG8sgsic7eUu2coPtrMe4vtb5B5A6+onXPMaLoTT6oxz5UfOBzkZIdGBdOp3XuLBfg2lZe/ukaKzMJto3Umj7X7OqyEYH/eTRj+1bJzDiDYk6d/96LLytuVVPaAU1vQBq7ee1W7iZagS5EzZ3lXJDlHckiQ/blc0QPMbhNtiRyxkIOvBIw==; 31:qfE0a+WyWOykW3k9I9KbM8JK6wakDAQ7ZbWmiJKv2Hc6ehr1XBQV0WR93OTaONHF/hjp6hfOTAI38XAlGn5SuMnERL8M5tJUwTddw/vmr0ATkueJ3KWaspFhos0yOvweR5SSfSMXXV2VAh2s4LqPWKhvdjGRnr3T7NBFcN+d6QILzB9OmbPbZOFcPbG7vcabGWn95pkUenn6w9Z1zYGHpUtbHI7C7VpSiTR/S9w3oe8= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2045: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 20:ZbS15V3UXrYPtukld7obYlzpaAdVfPP1dSn1+VPyS3Td9iy+1VhIcyXLncSPTCIC35Ismn13/zA75YltN5K0JyunmpX0xCq2yABxn9AakzKysLnzq/dSjZ7c0r3IirdZ/lbnQjRLP14JOlQzuyNqZuQiITAqoH4RCJObSuZph3wqYyQsrdTIKozojXcT64QRbtPFrU7Fl3aKk0reMecV/dEIvyYrIbQKSVDsD8NpybYmUjOtaocb17sbcKGZComKHG87wVWViJ4+oa/ELyqsoSQ6q1HIP/Liq1PfT5XUyZEMxoJHk8Bh6wfnguKojul9sLjqMNfZSi44fknFTTszS3jRBfO/LVjpA48/wAzAjgsBKFVB4baD4OTEcDekO3jrW1kjdIHSHAsBL88SHy9UTk1KzBWjZWFcV+mAehhXw2dGEAKWQ3LINok5mT2Rw3I6Q0PW4yXHWcdhenOH/Rb4x845qJ0BtlcVYqSpwSItZrLK86q7AyjXHQifIfp5oEVy; 4:A+hdhEThHM7++CrTf4+i3xgiC9T4HtNfvvnKZLCF7e1qnjXKkEmUOa1HdQlWIu70lAIz2CRuUjXJ7KI/Sdj4gsAZMAN4PtvPfnipdeC1vhKdXj+KufOjHjJa+Mi5vnXQ9uUlRT9lsN6msVPjEQE33pJHAi8PowV3I8TwJ0WlqrmfIUtSpNZ1UVWo65ACyVc5B9Flz47oAuDBGxnA1Jljn6/v3HdY7Ppo7AbPGn496VjdY/44/reatrLylTPMQf71aJ1ICYP5VaqYr3dzADT6GQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(3002001)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:VI1PR0501MB2045; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2045; X-Forefront-PRVS: 0694C54398 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(366004)(39380400002)(376002)(396003)(189003)(199004)(5660300001)(8936002)(3846002)(6116002)(6666003)(2351001)(55016002)(97736004)(7736002)(5890100001)(305945005)(8676002)(48376002)(68736007)(2361001)(6916009)(2906002)(575784001)(86362001)(81166006)(81156014)(1076002)(50466002)(53936002)(47776003)(446003)(16586007)(36756003)(105586002)(2616005)(486006)(316002)(956004)(51416003)(69596002)(52116002)(7696005)(11346002)(386003)(476003)(59450400001)(50226002)(478600001)(66066001)(4326008)(186003)(21086003)(25786009)(106356001)(76176011)(16526019)(26005); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2045; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0501MB2045; 23:+0RaG0sFNXdMHECXfJKmUE0XY29q6EjTWqPnKot?= =?us-ascii?Q?GE75WB6JpAxanOAGtjvy5NcVkGNlDai9XyVZqQbspp2UdqLt6v+YHsnVXmJM?= =?us-ascii?Q?YeSWmP3acGtRuanjdwEoQc9tkobsVAYuWD9Kf1pW7sdSSfyfUt62SH4ugEql?= =?us-ascii?Q?ST5JKTBmLKXadzLsZ7Tz7RPBHvsJJT/xO8audbDD+isC96XJnY+bxU+FszFF?= =?us-ascii?Q?830IDOy1U8nfik0kAF8g1fY4+7jJFZoqX3ML1ErXm3UIUFRiKAwKH/JdyH1f?= =?us-ascii?Q?D+jAtpFap0OkC90U3e7pjcNWN+OvyIbNux66PO2S3JfzON1bWur/IqUV4fll?= =?us-ascii?Q?Tupr7MiCKxLDFTq0TLPGecE39DCFJuWxY3a7TH+FsyVkq4woQS+bUgjn6XwR?= =?us-ascii?Q?bWywP/oMJFwNwbnLAtNCfSgVj4e7Du+BRkIIfaV0MWi+LGqkDB67NgGD+V5u?= =?us-ascii?Q?J91heaqBl/mVNXCKSMJOgWGTGAxdhDARFRPMNCt+g7zHAaGs/AzNB7pMXIQw?= =?us-ascii?Q?9FpzVaguyQTVZAp2k3wrkPvvRBm5eb/IrS+E48JJ3ptPertRwI2OMTtiCOHT?= =?us-ascii?Q?SnuD1FP5l18+z9dNowJeWkQYzITF1wJuEVJwmGgWeZ8uoSKYXBl9HgBljQX8?= =?us-ascii?Q?pAiX9UVHxADcZR622GPGvHp8mHg/crxwdQ435EThOBmBmNFPUQC4avGK6U9d?= =?us-ascii?Q?vLldyH2C0RvwkeC40DtBGxoUcaC9B+TcB1eSk0/VvmzuUitLiFp8HQTxyzXX?= =?us-ascii?Q?OKzoV2x9SQQx5uFx7SxeEQBDWau1bwyBR8XSJ1DbCeb9sApCY/v/IWLWE5lm?= =?us-ascii?Q?lQU/LNhwUsQOK1Nq3xOSi/fZaNzkgXfBjGj85Yxfzda4JqVvr3yXLILY6lgI?= =?us-ascii?Q?0g0jwzrI53C2B54gfLPqYnoEoc+2HcQ8WeCRNhg8k7wWUftbQsycAydZjAb6?= =?us-ascii?Q?XJZ3YmuMQHvYvQpxFPUQ3cLM7zxX8/SHpBXQP91ptLhXs07aDFHqmL68AP+I?= =?us-ascii?Q?OvnQ4Q+nLcXGkdXPeml3RL/5muKbnkqsuCY5Mq86s+faBFlGhJ/qq02H3PB3?= =?us-ascii?Q?ilUoXdtECx0p/cDxhn8N3Rwt5FT59Iy6SxZ4y88c+OyyJfHIvOW4LrMXLVeU?= =?us-ascii?Q?wyEaEYuHbYkOKeDUtSbE+A8d0xaUsL38JEUmp3U0IfF4cgpvuWEBLB1Megk3?= =?us-ascii?Q?X4NV7IOyUuh1tWLvjI1XFCSCyvf7gBCousPSsjw8TAePnTM1vdCPBElCak/d?= =?us-ascii?Q?DfCFwJbZmz5LMlLY1gtVrOEVT7eD/c3IlRkqlKhUoI8j7uB8dEhG3f+mpS+k?= =?us-ascii?Q?91vD/OzqPBBJUSkiPFuENjLWSD0P2u2qQyAYRXnczR8KO?= X-Microsoft-Antispam-Message-Info: +prSVRizm40rh+95RrjwmovAlrdVZS+dvfeYcZ6HaXbO/nFwOd7q6Q44/p7sbAtoKt81O9EkndFRW/tae0G58VpaC9jdnYbbMk8u15qFk5PG/YsEbvwr73DbgDqPyDfFARg59rV+74m5wDSkBi+TwVRbpKqNybN8NgX/Y1vewkPdpk2BnWbRwi6f300TkaKG X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 6:3Pm8j4r9u5XkGpmDSstuWGHWhJBs6KzVfdFJ1E69bgvDJ7iXPKx6elTg2CF1pt5vRnf8roZ0AJVPNIr3g4ga558DbfMTrsohBa+uTOGTVz3bI29FAFU/ISdok4JiQvT6FKqyoZkPlWFcHA/0rvAHChdxo43/v68HS2ZYscZzDsMzAMDdS/ic8pZp/PFrv4mfFYFOTPNf/LEb/g773tQCczabdVXl64uzboO/s7Dx1ve08ZouOgYrO14F9GlC03ay8hzTnByu8kE7gNH7gBLIyA4RnIHikyB0CsHujsWHkINMVhfy3mI1EcbEOFbf3TzsSnFoswsFU6NRFtS6EyX9E5DLAe8WalfO0eINT0dP8isfTOG4A2CaaNTsGEoe2YwT2iU7cdUWRaJdkA/qQEE1FVagHk60wn6GJdvLCRiiSeARoUyGJ/daju10T4DCL3F86MbPHzSklWJNkPUNHKVq9g==; 5:dsSI+G9xvJz5eJsiWBIhbdgsDhJSVVh1cgfIShBNXMx8+KcIXSmcIPrHbx9lfzOjXubYtYwwGEPixV4ji3I8Rchv+5P0/n93dsHbXUBDDLfkCmB23R9BGgxRd/gi7HmKXcbgiAa3MwlMOoYjylfLJ2WwwN9uH/mtLjL9fzpaQSM=; 24:1ZCwbv//NSdjFtPy1GRhBbnNfSfHmBcKD27OlWSeSfXkhitENaFc0ewZNCaMO96EWvEqHWuxWYBLWauEDY3JQpCmlxYgEhmN/POIotKToD0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2045; 7:HWKFNNdm/Ha1r4tyNdzEztxnwD2pKNdIhxoaFLcmEPbltFg1e6y2eobftUhImEO+cWAQc1+8A/HJ+H5U/8W60pyGKJ4B8xKAUrgWBVvQIw2wq5lZmr1IeeqcqxK3gFGe3a4ZWvMDuMhEf4iMiEnXZ97ku7YammNhamRncrTHU/wC0qfAFX650my4ywYWjIA3cFXByWtRT6ltpyNObebMJ4NkWteOCxbx9YIEL7DrIB5Ca9TBYwmIezjCw77ralcE X-MS-Office365-Filtering-Correlation-Id: 9f03ff5f-f95b-4833-51d5-08d5ca7d0571 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2018 00:41:04.0703 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9f03ff5f-f95b-4833-51d5-08d5ca7d0571 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2045 Subject: [dpdk-stable] [PATCH v2 51/67] net/mlx4: fix Rx resource leak in case of error X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jun 2018 00:41:08 -0000 From: Adrien Mazarguil [ backported from upstream commit 84a684862f502f2d885bc5fa112da26265d5a0f4 ] When creation of a flow rule fails during dev_start(), the usage count of the common RSS context is not decremented, which triggers an assertion failure in debug mode during dev_close(). This is addressed by tracking the initialization status of the common RSS context in order to add missing cleanup code. A similar issue exists in mlx4_rxq_attach(), where usage count is incremented on a Rx queue but not released in case of error. This may lead to the above issue since RSS contexts created by flow rules attach themselves to Rx queues, incrementing their usage count. Fixes: 5697a4142107 ("net/mlx4: relax Rx queue configuration order") Cc: stable@dpdk.org Signed-off-by: Adrien Mazarguil --- drivers/net/mlx4/mlx4.c | 6 ++++-- drivers/net/mlx4/mlx4.h | 1 + drivers/net/mlx4/mlx4_rxq.c | 7 +++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 26a0c85ad..4d7bd5f0f 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -85,6 +85,8 @@ const char *pmd_mlx4_init_params[] = { NULL, }; +static void mlx4_dev_stop(struct rte_eth_dev *dev); + /** * DPDK callback for Ethernet device configuration. * @@ -167,8 +169,7 @@ mlx4_dev_start(struct rte_eth_dev *dev) dev->rx_pkt_burst = mlx4_rx_burst; return 0; err: - /* Rollback. */ - priv->started = 0; + mlx4_dev_stop(dev); return ret; } @@ -218,6 +219,7 @@ mlx4_dev_close(struct rte_eth_dev *dev) dev->tx_pkt_burst = mlx4_tx_burst_removed; rte_wmb(); mlx4_flow_clean(priv); + mlx4_rss_deinit(priv); for (i = 0; i != dev->data->nb_rx_queues; ++i) mlx4_rx_queue_release(dev->data->rx_queues[i]); for (i = 0; i != dev->data->nb_tx_queues; ++i) diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h index 82573d4ab..41d652ba8 100644 --- a/drivers/net/mlx4/mlx4.h +++ b/drivers/net/mlx4/mlx4.h @@ -126,6 +126,7 @@ struct priv { uint32_t vf:1; /**< This is a VF device. */ uint32_t intr_alarm:1; /**< An interrupt alarm is scheduled. */ uint32_t isolated:1; /**< Toggle isolated mode. */ + uint32_t rss_init:1; /**< Common RSS context is initialized. */ uint32_t hw_csum:1; /* Checksum offload is supported. */ uint32_t hw_csum_l2tun:1; /* Checksum support for L2 tunnels. */ struct rte_intr_handle intr_handle; /**< Port interrupt handle. */ diff --git a/drivers/net/mlx4/mlx4_rxq.c b/drivers/net/mlx4/mlx4_rxq.c index 53313c56f..06030c2c5 100644 --- a/drivers/net/mlx4/mlx4_rxq.c +++ b/drivers/net/mlx4/mlx4_rxq.c @@ -363,6 +363,8 @@ mlx4_rss_init(struct priv *priv) unsigned int i; int ret; + if (priv->rss_init) + return 0; /* Prepare range for RSS contexts before creating the first WQ. */ ret = mlx4dv_set_context_attr(priv->ctx, MLX4DV_SET_CTX_ATTR_LOG_WQS_RANGE_SZ, @@ -444,6 +446,7 @@ mlx4_rss_init(struct priv *priv) } wq_num_prev = wq_num; } + priv->rss_init = 1; return 0; error: ERROR("cannot initialize common RSS resources (queue %u): %s: %s", @@ -472,6 +475,8 @@ mlx4_rss_deinit(struct priv *priv) { unsigned int i; + if (!priv->rss_init) + return; for (i = 0; i != priv->dev->data->nb_rx_queues; ++i) { struct rxq *rxq = priv->dev->data->rx_queues[i]; @@ -480,6 +485,7 @@ mlx4_rss_deinit(struct priv *priv) mlx4_rxq_detach(rxq); } } + priv->rss_init = 0; } /** @@ -622,6 +628,7 @@ mlx4_rxq_attach(struct rxq *rxq) claim_zero(ibv_destroy_wq(wq)); if (cq) claim_zero(ibv_destroy_cq(cq)); + --rxq->usecnt; rte_errno = ret; ERROR("error while attaching Rx queue %p: %s: %s", (void *)rxq, msg, strerror(ret)); -- 2.11.0