From patchwork Thu Nov 17 15:28:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 119939 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 57F44A0552; Thu, 17 Nov 2022 16:28:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 413CC40DDC; Thu, 17 Nov 2022 16:28:31 +0100 (CET) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2060.outbound.protection.outlook.com [40.107.212.60]) by mails.dpdk.org (Postfix) with ESMTP id 83CB740DDA for ; Thu, 17 Nov 2022 16:28:29 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dl0A9SOXq2NDPno7ZCRQZnY+1C2IuDeruQl43xF2qwhQBm4QeIu9nJw/FlOBdNsr2/FDlfqO8KsywpQSewioL3DlXoro6w9z53qLRChJLBsCkwHgJOmP4JBZzyK2rIWUyK249fcxOMfR/pwPNtejylEeqQ9Ks8uadwK4hkRA7Jcu8iGBwDjBHPdQn4Kv1hrClNGdvaYaWcztxNyak+OPTp2EtX7HSRNsX12zG+cYqSyKrC00jDaCWUDeWJFo5ngBwv09d+nWl6RpSXMksnTe8EKddwM+KzP2cNaotVs921uSDR1MOBsypL1ZY5FwXf3lIayT2oqwkyxOj9Qn/BivsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pLgwvbN+UDpTMclXcdNq5GVNg/i4dkvQ8UxRbpWio2E=; b=MDqYz6IX97iXCN2Ap58fWgcKhkXJOMKUmmb5C6UQLYAjAe83F/A/8ZYFAkibzeEisbMxl4Jg6KP+LD6ax69P3I5tb6+hQrZ9qY7mKM6us4ThoJWowkqeUwAaWwTWg3F9nVILhYgUZLwGCTKFfB62vjpkfTyj0IqNWeyXAQ0bM/93ktmDCAm6O3CX97J34qxCLMUPNhGBaN/OQBpFY9s6ezhUOMY3WyEjVRfkcJQZlSfrvDpYAgw7U4MWAA90NvdG5bPLkrrkKEcsHx6ssQNbNQDtCvjfbup0FhTkQpSsIVyKzBVh6vK8KNR3RyIzs0XUnx1n7GX2HopNinc+hDqu2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pLgwvbN+UDpTMclXcdNq5GVNg/i4dkvQ8UxRbpWio2E=; b=SHWJlrWDLMltSpsDCVdgPt1NT1AQz4j/l1MzGM2NHCnNYXipGGiMiwrOFst9vJbejqYuuDIfHGym8fqoqdcK7FfWTj1rNa9neglpB69BbaTLi7UeKPiEECVQOuf2esY2rkp7gMfUCnM9/5kjiXojKnfn/Xc5cGYG/kKU1U6uUKhDLZbUEYdSPAa18UVNhzQwuueha1ut6gBj7HOZe8fIoUHfsXlNKXpAwOttce0CUZZB2uaq5cxUnOpE+fj7OoAZ+We4iL8MXoV7b3Otacm9NaIZUft+g8IT+677j4n8dwBlabLWhYrHRjOIc2273qsaQPPQrIePbRLnXQjPK7snow== Received: from BN0PR04CA0047.namprd04.prod.outlook.com (2603:10b6:408:e8::22) by DM8PR12MB5496.namprd12.prod.outlook.com (2603:10b6:8:38::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.20; Thu, 17 Nov 2022 15:28:28 +0000 Received: from BN8NAM11FT096.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::b3) by BN0PR04CA0047.outlook.office365.com (2603:10b6:408:e8::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.20 via Frontend Transport; Thu, 17 Nov 2022 15:28:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BN8NAM11FT096.mail.protection.outlook.com (10.13.177.195) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.8 via Frontend Transport; Thu, 17 Nov 2022 15:28:27 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Thu, 17 Nov 2022 07:28:13 -0800 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Thu, 17 Nov 2022 07:28:13 -0800 Received: from nvidia.com (10.127.8.13) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36 via Frontend Transport; Thu, 17 Nov 2022 07:28:11 -0800 From: Michael Baum To: CC: Matan Azrad , Raslan Darawsheh , Viacheslav Ovsiienko , Subject: [PATCH] net/mlx5: fix invalid memory access in port closing Date: Thu, 17 Nov 2022 17:28:07 +0200 Message-ID: <20221117152807.1259256-1-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT096:EE_|DM8PR12MB5496:EE_ X-MS-Office365-Filtering-Correlation-Id: e22450d1-4bf7-4b3b-e35b-08dac8b05fe5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BmeBoh49xtNLuot5TE1WX6HXXPbFVJMLk3VRamL8hhIeTRGZ9lJs8DT/kyh1yjuFyAmJmVH1Gv7Z0+s7tMVRcKLwy83zhcXKcwrkNFlP2GZ1/idCUbmi75s+7fSn3azFRL9/TYdJZvDhvccVBXC0DtpgX00vLB3eRI4WzLFGbBCZOX++QCw6b5Mv+kTiSsdj9kwEBCeCk4XCp8TWLjlUcI6fvYmsOH5sePdtjsZ7Qjg9rElYb9eI6shEaTO1qkmphZ7wyUqNTpCSathH3VF0YrXcpDM+MsXqF7HX5ZzOW1/9i5XyclDwhUIBF1+XbVR9IjxCeQIe4CH4T/CE20qvPiui7eq64f2CrzbDH1ftbVL6DZ/Ocv9uFYRzGnsRcVCVWfJpMiHnSmDOdvczvEEIHfTmue84VxjBY+c0JhPJIFQID67u3880jcdMqpsfOWQ8lT50yG23oQcEw9KYLyLy8zv2E0jhFjcibYyjq0m/RSDLa5Ab09UXbdQDwHlrjpN2zrZxcy4WDuUPkrkHc5RC3Gvq8GiuYeCqNf0+FyojwHbFfiViekMCSdGPWFNT57JHVTEievtNwQDhSKJtRbw31GMBZraLIhwUVvfop3iNgJB17TzPoQjhh3xvPgG/Hkgyh38Rt6mXiiOyF6AoWhwgXqLMzOFca1P8UPT76MzO2EUAc+VekiKVt5JATHsLPpbhlXw4Wn1udvXsTqwTL47AgQ== X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230022)(4636009)(396003)(136003)(376002)(39860400002)(346002)(451199015)(36840700001)(40470700004)(46966006)(2906002)(36860700001)(83380400001)(55016003)(40480700001)(40460700003)(36756003)(41300700001)(70206006)(70586007)(2616005)(7636003)(82310400005)(86362001)(186003)(82740400003)(6286002)(7696005)(6916009)(54906003)(356005)(26005)(8936002)(426003)(5660300002)(336012)(4326008)(8676002)(47076005)(1076003)(316002)(107886003)(6666004)(478600001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2022 15:28:27.3016 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e22450d1-4bf7-4b3b-e35b-08dac8b05fe5 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT096.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR12MB5496 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The shared IB device (sh) has per port data updated in port creation. In port closing this port data is updated even when the SH still exist. However, this updating is happened after SH has been released and for last port it actually accesses to freed memory. This patch updates the port data before SH releasing. Fixes: 13c5c093905c ("net/mlx5: fix port event cleaning order") Cc: michaelba@nvidia.com Signed-off-by: Michael Baum Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 6a0d66247a..e55be8720e 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -2119,6 +2119,12 @@ mlx5_dev_close(struct rte_eth_dev *dev) if (priv->hrxqs) mlx5_list_destroy(priv->hrxqs); mlx5_free(priv->ext_rxqs); + priv->sh->port[priv->dev_port - 1].nl_ih_port_id = RTE_MAX_ETHPORTS; + /* + * The interrupt handler port id must be reset before priv is reset + * since 'mlx5_dev_interrupt_nl_cb' uses priv. + */ + rte_io_wmb(); /* * Free the shared context in last turn, because the cleanup * routines above may use some shared fields, like @@ -2144,12 +2150,6 @@ mlx5_dev_close(struct rte_eth_dev *dev) if (!c) claim_zero(rte_eth_switch_domain_free(priv->domain_id)); } - priv->sh->port[priv->dev_port - 1].nl_ih_port_id = RTE_MAX_ETHPORTS; - /* - * The interrupt handler port id must be reset before priv is reset - * since 'mlx5_dev_interrupt_nl_cb' uses priv. - */ - rte_io_wmb(); memset(priv, 0, sizeof(*priv)); priv->domain_id = RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID; /*