From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 192A0A0C3F for ; Sat, 12 Jun 2021 01:06:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0A80A4003F; Sat, 12 Jun 2021 01:06:12 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2047.outbound.protection.outlook.com [40.107.94.47]) by mails.dpdk.org (Postfix) with ESMTP id 0533C4003F for ; Sat, 12 Jun 2021 01:06:10 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ilI4N186e3BMciWQ+kcCIrv02g2ey8RWWAu/D/lkKe4W+NAMFJdplurnd5QlPAW6CVFJF5muRB4pc9HY9elxn3vHILPGdIbaa35/RVqWlsAzC6bZQ1uKSYiRsva/fwOtuJHOM1yDJuZCJPP4JaUT89DQgp/RHkKvlwt8jBJn7J+PyR1jkXIsvyjOlVZ9r+FkxZ4NaGibb4Zo7M4uZ9w2b6PgghbNpbitFwOoAJpJCGq3CTRgx0bBkBV5eh8NRVKtzSjfeb/JvK1GarJlnc/NoQ4v3R+FBmloBJcIt5dd1YptysJzk2aQscL0tJF/Nn39ny8kTg78evRJ4hjw1hkBlg== 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-SenderADCheck; bh=mgDDoNBzFV+1g9DPv1aIgoqmjhQt5xK+zwRc6W4sp18=; b=ImHNqd4FvsB3tmQ+XDjs63EOm4v0efJ3QyHnCt/aCuSx0kIZCHrSblhf16nOJ/jlCRpf0A2Qe19RsM9u6xGM82AN9eEXJn2z5hByEffWcMlymocpTen4c3ArZ9CBW3nJXgnAIKxv0o3Yz7oqrEJ+UPNoZoTExnl4OvPWjw7yuN5sllctavAcf3Vk0D0t3n13/JRLqxt9j6PuUJ9iJCmaeXsdkdMTMnRhfDcVh1FvbrDKXbtrdlf9ndKJn1m1kZ78b8zcrXndwLDlf8HH/JV8FFwaU4Y5lA9OurmxsJkKO/9TqNGLlZP7B8dz/D7WApc5zp2uUebtgKtlFF13tzDVhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=trustnetic.com smtp.mailfrom=nvidia.com; dmarc=pass (p=none sp=none 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=mgDDoNBzFV+1g9DPv1aIgoqmjhQt5xK+zwRc6W4sp18=; b=YjdvIyMCifKmQWBRwSjZZvmTadU+FvouODF0JgxpJ/hnZLRXHJPwXEwQLtE9PX1I3jJAeRrZOG3bDw/MoRuFgV+pux+HCGq+E0BrlQZwf0kn0SBOodX+v7O7BsZIge0Lw6c31ZGtnke5STuEFXmCc47Z2CdjFr9WV4btmggn/QYL8U7acGfhw7Id3WGjMeDKxCqRz5qjmloF7RWyARgNpv/GeirSBZ7i6dzZgHUuqKADm+8D9De/d9LirA9PCI8voDxXDWSRHpwlAO+iWduZgu0UFxMqocjSp/L0GmI9kitbRiHfmS+qWyA+/GjA3zJKDt/0ZlDEdZZzyIulWgh4KQ== Received: from MWHPR1401CA0002.namprd14.prod.outlook.com (2603:10b6:301:4b::12) by CY4PR12MB1751.namprd12.prod.outlook.com (2603:10b6:903:121::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Fri, 11 Jun 2021 23:06:08 +0000 Received: from CO1NAM11FT052.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::cb) by MWHPR1401CA0002.outlook.office365.com (2603:10b6:301:4b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22 via Frontend Transport; Fri, 11 Jun 2021 23:06:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; trustnetic.com; dkim=none (message not signed) header.d=none;trustnetic.com; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by CO1NAM11FT052.mail.protection.outlook.com (10.13.174.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4219.21 via Frontend Transport; Fri, 11 Jun 2021 23:06:07 +0000 Received: from nvidia.com (172.20.187.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 11 Jun 2021 23:06:04 +0000 From: Xueming Li To: Ferruh Yigit CC: Luca Boccassi , Ajit Khaparde , Andrew Rybchenko , Haiyue Wang , Rasesh Mody , Jiawen Wu , Beilei Xing , Hemant Agrawal , dpdk stable Date: Sat, 12 Jun 2021 07:01:49 +0800 Message-ID: <20210611230433.8208-15-xuemingl@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210611230433.8208-1-xuemingl@nvidia.com> References: <20210510160258.30982-229-xuemingl@nvidia.com> <20210611230433.8208-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [172.20.187.5] X-ClientProxiedBy: HQMAIL105.nvidia.com (172.20.187.12) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ceb5a1ed-4867-40b5-0b84-08d92d2d7efe X-MS-TrafficTypeDiagnostic: CY4PR12MB1751: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fIzDZCzTqU0Z7FpBw1oEUJ4ri3fmp+VmZAET1NS273PbYjAgzfkT5INpbqvkqadRAtpwE87bleSRJpNfHKccr65mxjmsXogi09MWCGnl1PdpPnhlIRYnDC7duTkRZ0gBEDC4Yp0EayBZ3yForc5kX9aji4WY7ZwhI6hBZdEld6Wxupf4xHXw0G9AIkDQQP9vx0FO0d6WSPf20nm/hDmb0Ap1k1lkH0OswgmXeV0+iDDZcHF6LF0mUoXXFfvc/NPtHz/ZBfL8MIf6Q//+Y5CPXWFRydvs5bPsyEukKxC1QAsOpNCY/0AAK/zqJmHMGuIDroFj4olhUTfgI+84l9shr1nC3PryMGclOv0dmr8qA9WDQ/QulyRlQIIL1WA1Kedy1BiiRlN3SLe3TVtM7QCeLRhQydx2jtyQt8GjBeRKhaZnnZI3NY0K30Ya29Xi0pYvg0THc6yOG5qC0YT85bUlxAiaWJ/dOzqCEf7ZRX/J5OMCO2oVaqb5h+Jag0GJbKt3WZWttHxLcAt4oftQOHHcy6m/WGjiglM65ddSZ1KDQnY0ZohUoOa/TV0KSx7CSQWV5/09W3WhvbnEc9DPlxofOOwimpB1Dlo8mmsidrtnpsDyreTp4Bokosml4Hn4pyLxkQzsNGrTaZgopCudseUaNrTs/j+duZ9Ynj/dPQR/Nm+gzTY2HOWWm9x3Fr2DvqvRbqisKuIUK6N8BJKsVFjuIj9evIWbnPscss9cJGmxhNo3GG8JNKABcaWPDiMNry1MrariqnqetNqXaIZNaQM8nwO9OpxUcjrKa9a50dGzFCKAjGCYt/1orLjK4BpjBCIZ X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(396003)(136003)(376002)(39860400002)(346002)(46966006)(36840700001)(478600001)(2616005)(426003)(5660300002)(966005)(70586007)(70206006)(336012)(7696005)(53546011)(55016002)(6286002)(2906002)(8676002)(6666004)(8936002)(6916009)(1076003)(82740400003)(36860700001)(356005)(83380400001)(54906003)(47076005)(7636003)(36906005)(26005)(16526019)(4326008)(316002)(186003)(30864003)(7416002)(36756003)(86362001)(82310400003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2021 23:06:07.5843 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ceb5a1ed-4867-40b5-0b84-08d92d2d7efe X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT052.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1751 Subject: [dpdk-stable] patch 'drivers/net: fix FW version query' has been queued to stable release 20.11.2 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 20.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 06/14/21. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/steevenlee/dpdk This queued commit can be viewed at: https://github.com/steevenlee/dpdk/commit/3ab9cfbc6a67ae2c4b54cc4a09c0327638321f5f Thanks. Xueming Li --- >From 3ab9cfbc6a67ae2c4b54cc4a09c0327638321f5f Mon Sep 17 00:00:00 2001 From: Ferruh Yigit Date: Wed, 21 Apr 2021 17:20:57 +0100 Subject: [PATCH] drivers/net: fix FW version query Cc: Luca Boccassi [ upstream commit d345d6c9575c337189a755c8692be4dd3e1ed708 ] Fixes a few different things: * Remove 'fw_version' NULL checks, it is allowed if the 'fw_size' is zero, 'fw_version' being NULL but 'fw_size' not zero condition checked in ethdev layer * Be sure required buffer size is returned if provided one is not big enough, instead of returning success (0) * Document in doxygen comment the '-EINVAL' is a valid return type * Take into account that 'snprintf' can return negative value * Cast length to 'size_t' to compare it with 'fw_size' Fixes: bb42aa9ffe4e ("net/atlantic: configure device start/stop") Fixes: ff70acdf4299 ("net/axgbe: support reading FW version") Fixes: e2652b0a20a0 ("net/bnxt: support get FW version") Fixes: cf0fab1d2ca5 ("net/dpaa: support firmware version get API") Fixes: 748eccb97cdc ("net/dpaa2: add support for firmware version get") Fixes: b883c0644a24 ("net/e1000: add firmware version get") Fixes: 293430677e9c ("net/enic: add handler to return firmware version") Fixes: 1f5ca0b460cd ("net/hns3: support some device operations") Fixes: bd5b86732bc7 ("net/hns3: modify format for firmware version") Fixes: ed0dfdd0e976 ("net/i40e: add firmware version get") Fixes: e31cb9a36298 ("net/ice: support FW version getting") Fixes: 4f09bc55ac3d ("net/igc: implement device base operations") Fixes: eec10fb0ce6b ("net/ionic: support FW version") Fixes: 8b0b56574269 ("net/ixgbe: add firmware version get") Fixes: 4d9f5b8adc02 ("net/octeontx2: add FW version get operation") Fixes: f97b56f9f12e ("net/qede: support FW version query") Fixes: 83fef46a22b2 ("net/sfc: add callback to retrieve FW version") Fixes: bc84ac0fadef ("net/txgbe: support getting FW version") Fixes: 21913471202f ("ethdev: add firmware version get") Signed-off-by: Ferruh Yigit Acked-by: Ajit Khaparde Acked-by: Andrew Rybchenko Acked-by: Haiyue Wang Acked-by: Rasesh Mody Acked-by: Jiawen Wu Acked-by: Beilei Xing Acked-by: Hemant Agrawal --- drivers/net/atlantic/atl_ethdev.c | 7 ++++--- drivers/net/bnxt/bnxt_ethdev.c | 4 +++- drivers/net/dpaa/dpaa_ethdev.c | 6 ++++-- drivers/net/dpaa2/dpaa2_ethdev.c | 4 +++- drivers/net/e1000/igb_ethdev.c | 4 +++- drivers/net/enic/enic_ethdev.c | 15 ++++++++++----- drivers/net/hns3/hns3_ethdev.c | 5 ++++- drivers/net/hns3/hns3_ethdev_vf.c | 5 ++++- drivers/net/i40e/i40e_ethdev.c | 4 +++- drivers/net/ice/ice_ethdev.c | 4 +++- drivers/net/igc/igc_ethdev.c | 4 +++- drivers/net/ionic/ionic_ethdev.c | 15 +++++++++------ drivers/net/ixgbe/ixgbe_ethdev.c | 4 +++- drivers/net/octeontx2/otx2_ethdev_ops.c | 2 +- drivers/net/qede/qede_ethdev.c | 3 --- drivers/net/sfc/sfc_ethdev.c | 8 -------- drivers/net/txgbe/txgbe_ethdev.c | 4 +++- 17 files changed, 60 insertions(+), 38 deletions(-) diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index b0716773ad..02935d5fd1 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -1073,7 +1073,7 @@ atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) { struct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private); uint32_t fw_ver = 0; - unsigned int ret = 0; + int ret = 0; ret = hw_atl_utils_get_fw_version(hw, &fw_ver); if (ret) @@ -1081,10 +1081,11 @@ atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) ret = snprintf(fw_version, fw_size, "%u.%u.%u", fw_ver >> 24, (fw_ver >> 16) & 0xFFU, fw_ver & 0xFFFFU); + if (ret < 0) + return -EINVAL; ret += 1; /* add string null-terminator */ - - if (fw_size < ret) + if (fw_size < (size_t)ret) return ret; return 0; diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 46dabe8c8f..c2344dabc0 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -2763,9 +2763,11 @@ bnxt_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) ret = snprintf(fw_version, fw_size, "%d.%d.%d.%d", fw_major, fw_minor, fw_updt, fw_rsvd); + if (ret < 0) + return -EINVAL; ret += 1; /* add the size of '\0' */ - if (fw_size < (uint32_t)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 79e39451b3..824eb073ad 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -538,9 +538,11 @@ dpaa_fw_version_get(struct rte_eth_dev *dev __rte_unused, ret = snprintf(fw_version, fw_size, "SVR:%x-fman-v%x", svr_ver, fman_ip_rev); - ret += 1; /* add the size of '\0' */ + if (ret < 0) + return -EINVAL; - if (fw_size < (uint32_t)ret) + ret += 1; /* add the size of '\0' */ + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 5c1a12b841..49cbb09947 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -225,9 +225,11 @@ dpaa2_fw_version_get(struct rte_eth_dev *dev, mc_ver_info.major, mc_ver_info.minor, mc_ver_info.revision); + if (ret < 0) + return -EINVAL; ret += 1; /* add the size of '\0' */ - if (fw_size < (uint32_t)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index 31927c5464..681842f5ae 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -2161,9 +2161,11 @@ eth_igb_fw_version_get(struct rte_eth_dev *dev, char *fw_version, } break; } + if (ret < 0) + return -EINVAL; ret += 1; /* add the size of '\0' */ - if (fw_size < (u32)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index d041a6bee9..327b62307b 100644 --- a/drivers/net/enic/enic_ethdev.c +++ b/drivers/net/enic/enic_ethdev.c @@ -1061,16 +1061,21 @@ static int enicpmd_dev_fw_version_get(struct rte_eth_dev *eth_dev, int ret; ENICPMD_FUNC_TRACE(); - if (fw_version == NULL || fw_size <= 0) - return -EINVAL; + enic = pmd_priv(eth_dev); ret = vnic_dev_fw_info(enic->vdev, &info); if (ret) return ret; - snprintf(fw_version, fw_size, "%s %s", + ret = snprintf(fw_version, fw_size, "%s %s", info->fw_version, info->fw_build); - fw_version[fw_size - 1] = '\0'; - return 0; + if (ret < 0) + return -EINVAL; + + ret += 1; /* add the size of '\0' */ + if (fw_size < (size_t)ret) + return ret; + else + return 0; } static const struct eth_dev_ops enicpmd_eth_dev_ops = { diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 268a73bf73..6e1d7891e9 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -2647,8 +2647,11 @@ hns3_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, HNS3_FW_VERSION_BYTE1_S), hns3_get_field(version, HNS3_FW_VERSION_BYTE0_M, HNS3_FW_VERSION_BYTE0_S)); + if (ret < 0) + return -EINVAL; + ret += 1; /* add the size of '\0' */ - if (fw_size < (uint32_t)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index c8783827a3..d2162158e6 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -2046,8 +2046,11 @@ hns3vf_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, HNS3_FW_VERSION_BYTE1_S), hns3_get_field(version, HNS3_FW_VERSION_BYTE0_M, HNS3_FW_VERSION_BYTE0_S)); + if (ret < 0) + return -EINVAL; + ret += 1; /* add the size of '\0' */ - if (fw_size < (uint32_t)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 104f121436..fb5b8a1283 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -3743,9 +3743,11 @@ i40e_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) ((hw->nvm.version >> 4) & 0xff), (hw->nvm.version & 0xf), hw->nvm.eetrack, ver, build, patch); + if (ret < 0) + return -EINVAL; ret += 1; /* add the size of '\0' */ - if (fw_size < (u32)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index f30199fc23..88efe90769 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -4579,10 +4579,12 @@ ice_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) hw->flash.nvm.minor, hw->flash.nvm.eetrack, ver, build, patch); + if (ret < 0) + return -EINVAL; /* add the size of '\0' */ ret += 1; - if (fw_size < (u32)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index a1152f9deb..44b35d07ae 100644 --- a/drivers/net/igc/igc_ethdev.c +++ b/drivers/net/igc/igc_ethdev.c @@ -1476,9 +1476,11 @@ eth_igc_fw_version_get(struct rte_eth_dev *dev, char *fw_version, fw.eep_build); } } + if (ret < 0) + return -EINVAL; ret += 1; /* add the size of '\0' */ - if (fw_size < (u32)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index fe778043eb..8cf39f4742 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -218,15 +218,18 @@ ionic_dev_fw_version_get(struct rte_eth_dev *eth_dev, { struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); struct ionic_adapter *adapter = lif->adapter; + int ret; - if (fw_version == NULL || fw_size <= 0) - return -EINVAL; - - snprintf(fw_version, fw_size, "%s", + ret = snprintf(fw_version, fw_size, "%s", adapter->fw_version); - fw_version[fw_size - 1] = '\0'; + if (ret < 0) + return -EINVAL; - return 0; + ret += 1; /* add the size of '\0' */ + if (fw_size < (size_t)ret) + return ret; + else + return 0; } /* diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 718a665ca0..61bcf80b47 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -3808,9 +3808,11 @@ ixgbe_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) etrack_id = (eeprom_verh << 16) | eeprom_verl; ret = snprintf(fw_version, fw_size, "0x%08x", etrack_id); + if (ret < 0) + return -EINVAL; ret += 1; /* add the size of '\0' */ - if (fw_size < (u32)ret) + if (fw_size < (size_t)ret) return ret; else return 0; diff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c index 919754130c..f586e9ef59 100644 --- a/drivers/net/octeontx2/otx2_ethdev_ops.c +++ b/drivers/net/octeontx2/otx2_ethdev_ops.c @@ -453,7 +453,7 @@ otx2_nix_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, rc = strlcpy(fw_version, (char *)dev->mkex_pfl_name, rc); rc += 1; /* Add the size of '\0' */ - if (fw_size < (uint32_t)rc) + if (fw_size < (size_t)rc) return rc; return 0; diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index bfd38a9772..293022c2e7 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -237,9 +237,6 @@ qede_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size) static char ver_str[QEDE_PMD_DRV_VER_STR_SIZE]; size_t size; - if (fw_ver == NULL) - return 0; - if (IS_PF(edev)) snprintf(ver_str, QEDE_PMD_DRV_VER_STR_SIZE, "%s", QEDE_PMD_FW_VERSION); diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index a002e2c037..cde9f2423b 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -46,14 +46,6 @@ sfc_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) int ret; int rc; - /* - * Return value of the callback is likely supposed to be - * equal to or greater than 0, nevertheless, if an error - * occurs, it will be desirable to pass it to the caller - */ - if ((fw_version == NULL) || (fw_size == 0)) - return -EINVAL; - rc = efx_nic_get_fw_version(sa->nic, &enfi); if (rc != 0) return -rc; diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 63bae511ef..2e539ca02e 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -2313,9 +2313,11 @@ txgbe_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) etrack_id = (eeprom_verh << 16) | eeprom_verl; ret = snprintf(fw_version, fw_size, "0x%08x", etrack_id); + if (ret < 0) + return -EINVAL; ret += 1; /* add the size of '\0' */ - if (fw_size < (u32)ret) + if (fw_size < (size_t)ret) return ret; else return 0; -- 2.25.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-06-12 06:53:57.066899300 +0800 +++ 0015-drivers-net-fix-FW-version-query.patch 2021-06-12 06:53:56.090000000 +0800 @@ -1 +1 @@ -From d345d6c9575c337189a755c8692be4dd3e1ed708 Mon Sep 17 00:00:00 2001 +From 3ab9cfbc6a67ae2c4b54cc4a09c0327638321f5f Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Luca Boccassi + +[ upstream commit d345d6c9575c337189a755c8692be4dd3e1ed708 ] @@ -35 +37,0 @@ -Cc: stable@dpdk.org @@ -47 +48,0 @@ - drivers/net/axgbe/axgbe_rxtx.c | 4 ---- @@ -64 +65 @@ - 18 files changed, 60 insertions(+), 42 deletions(-) + 17 files changed, 60 insertions(+), 38 deletions(-) @@ -67 +68 @@ -index 473f6209f6..ce7f814f25 100644 +index b0716773ad..02935d5fd1 100644 @@ -93,22 +93,0 @@ -diff --git a/drivers/net/axgbe/axgbe_rxtx.c b/drivers/net/axgbe/axgbe_rxtx.c -index e34bb6d448..33f709a6bb 100644 ---- a/drivers/net/axgbe/axgbe_rxtx.c -+++ b/drivers/net/axgbe/axgbe_rxtx.c -@@ -623,9 +623,6 @@ int axgbe_dev_fw_version_get(struct rte_eth_dev *eth_dev, - pdata = (struct axgbe_port *)eth_dev->data->dev_private; - hw_feat = &pdata->hw_feat; - -- if (fw_version == NULL) -- return -EINVAL; -- - ret = snprintf(fw_version, fw_size, "%d.%d.%d", - AXGMAC_GET_BITS(hw_feat->version, MAC_VR, USERVER), - AXGMAC_GET_BITS(hw_feat->version, MAC_VR, DEVID), -@@ -634,7 +631,6 @@ int axgbe_dev_fw_version_get(struct rte_eth_dev *eth_dev, - return -EINVAL; - - ret += 1; /* add the size of '\0' */ -- - if (fw_size < (size_t)ret) - return ret; - else @@ -116 +95 @@ -index f5d2dc8590..dba5b9f94d 100644 +index 46dabe8c8f..c2344dabc0 100644 @@ -119 +98 @@ -@@ -2794,9 +2794,11 @@ bnxt_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) +@@ -2763,9 +2763,11 @@ bnxt_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) @@ -133 +112 @@ -index 176943a8ea..57ee660c5e 100644 +index 79e39451b3..824eb073ad 100644 @@ -136 +115 @@ -@@ -532,9 +532,11 @@ dpaa_fw_version_get(struct rte_eth_dev *dev __rte_unused, +@@ -538,9 +538,11 @@ dpaa_fw_version_get(struct rte_eth_dev *dev __rte_unused, @@ -151 +130 @@ -index 9011dcfc12..95e8d9abe8 100644 +index 5c1a12b841..49cbb09947 100644 @@ -154 +133 @@ -@@ -226,9 +226,11 @@ dpaa2_fw_version_get(struct rte_eth_dev *dev, +@@ -225,9 +225,11 @@ dpaa2_fw_version_get(struct rte_eth_dev *dev, @@ -168 +147 @@ -index 3fdffe3294..10ee0f3341 100644 +index 31927c5464..681842f5ae 100644 @@ -171 +150 @@ -@@ -2159,9 +2159,11 @@ eth_igb_fw_version_get(struct rte_eth_dev *dev, char *fw_version, +@@ -2161,9 +2161,11 @@ eth_igb_fw_version_get(struct rte_eth_dev *dev, char *fw_version, @@ -185 +164 @@ -index d91c2cdc8c..e1a393b847 100644 +index d041a6bee9..327b62307b 100644 @@ -188 +167 @@ -@@ -1050,16 +1050,21 @@ static int enicpmd_dev_fw_version_get(struct rte_eth_dev *eth_dev, +@@ -1061,16 +1061,21 @@ static int enicpmd_dev_fw_version_get(struct rte_eth_dev *eth_dev, @@ -216 +195 @@ -index 60267e1ec1..bd0699af58 100644 +index 268a73bf73..6e1d7891e9 100644 @@ -219 +198 @@ -@@ -2828,8 +2828,11 @@ hns3_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, +@@ -2647,8 +2647,11 @@ hns3_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, @@ -233 +212 @@ -index 7a7a6bfa7c..06a26fb9be 100644 +index c8783827a3..d2162158e6 100644 @@ -236 +215 @@ -@@ -2181,8 +2181,11 @@ hns3vf_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, +@@ -2046,8 +2046,11 @@ hns3vf_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version, @@ -250 +229 @@ -index e6206a7e51..66d23d698e 100644 +index 104f121436..fb5b8a1283 100644 @@ -253 +232 @@ -@@ -3687,9 +3687,11 @@ i40e_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) +@@ -3743,9 +3743,11 @@ i40e_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) @@ -267 +246 @@ -index da9e85bd7c..c37a2e09ce 100644 +index f30199fc23..88efe90769 100644 @@ -270 +249 @@ -@@ -4646,10 +4646,12 @@ ice_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) +@@ -4579,10 +4579,12 @@ ice_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) @@ -285 +264 @@ -index 31c99dca09..b1c58fb3de 100644 +index a1152f9deb..44b35d07ae 100644 @@ -302 +281 @@ -index cffe899c07..5ec474dbf5 100644 +index fe778043eb..8cf39f4742 100644 @@ -305 +284 @@ -@@ -215,15 +215,18 @@ ionic_dev_fw_version_get(struct rte_eth_dev *eth_dev, +@@ -218,15 +218,18 @@ ionic_dev_fw_version_get(struct rte_eth_dev *eth_dev, @@ -331 +310 @@ -index ff65145f55..a5c191fe1b 100644 +index 718a665ca0..61bcf80b47 100644 @@ -334 +313 @@ -@@ -3814,9 +3814,11 @@ ixgbe_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) +@@ -3808,9 +3808,11 @@ ixgbe_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) @@ -348 +327 @@ -index 6f0cdc5854..5a4501208e 100644 +index 919754130c..f586e9ef59 100644 @@ -361 +340 @@ -index 057a7b00e2..c2c8de8675 100644 +index bfd38a9772..293022c2e7 100644 @@ -375 +354 @@ -index 52ba7b67b0..c50ecea0b9 100644 +index a002e2c037..cde9f2423b 100644 @@ -394 +373 @@ -index 97796f040b..8dbe3da5c2 100644 +index 63bae511ef..2e539ca02e 100644 @@ -397,2 +376 @@ -@@ -2582,9 +2582,11 @@ txgbe_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) - hw->phy.get_fw_version(hw, &etrack_id); +@@ -2313,9 +2313,11 @@ txgbe_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) @@ -399,0 +378 @@ + etrack_id = (eeprom_verh << 16) | eeprom_verl;