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 A9607A0C3F for ; Sat, 12 Jun 2021 01:21:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 97C354003F; Sat, 12 Jun 2021 01:21:22 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2059.outbound.protection.outlook.com [40.107.93.59]) by mails.dpdk.org (Postfix) with ESMTP id AB38E4111E for ; Sat, 12 Jun 2021 01:21:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N4yi0t/o6O0/vQCb3r13wViDStyT2px0sH+r091ZwJQInPedpxQg9nqQZPAYfXHWuOGrgNT9/Ki/pEYKDQECWgY3Gk0XuydknXJtVmrT2h0zoggNVgVH2NLqltad6FtNHJFwUzlOt1Cpwfka7z8r4Aa89AnAKsJPckRgboWqMWEFD3yIdBJYz5Y7z3/OGVXICNyAk2yDNTGElGlo6enldzYmUOuBX3LGvrP/aOAker38hsnLaO+LJzGZg1o7DSDWKwC/NSKivYgRlkDkf+SCM1Ev1NeRH9GCii2vntJzSPtAii98b/VyvVhwd1ElM2h6TlXuhAmgwB5Q9aXDOQcx2A== 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=eOfNaz63AbZk+ZvHHbifyW57/Y8iN/mlim3pD9MlJB0=; b=XsN3i7AVdS4Q+R0pfMbf7802KgKCUnnD4bFqxvFjKXOXVBfYBC+wH3Zp1xk7cQRiSXsXlgL+JK6I+QPhp7r5JDdWn7x/vRW4AVAdvF8J+cgrHAhPwykycbi0pljKyrDU7LY5reTNSfPOQgH0kybgTWkNRngDJKasZ3jYac21tMUzkme1P4qdrbEywlY6+IdAHK9wb7qSsuQZWgtEz98+0tKHOAE34Q8S1SdRtSLNiJtxLltW5bJehWl/rMJI/t3G+nQj190PJXxWQUK7TQ0aRbi740gjnXUUmiu51CMt5UmM/wYFUHZjGFJTvU25QzYj5IdOR5CcgHBPo1SMIzLkdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=oktetlabs.ru 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=eOfNaz63AbZk+ZvHHbifyW57/Y8iN/mlim3pD9MlJB0=; b=Ahy8rilETH7tVL6IniwS83l2jfLnWvQb9mJh2g7D2XkWGhvi5A1+RZejzeHExxU379z6hLXRK/WbCoQ0E1axebWTHSJ8hZ6DPZPhyDoejhFt0iz9hz06i/3CUf7zJyaqgQdJ3/YPrcWZ5IkHkTm420nqLGJJ2O2RhFUaBi7+ZNajyvlIyIFNZ/9FQTLVVYiaKqvHpP82pEtQIf3JW2VvwkmMdn8dbp/IO/TI2fUeCK6xIcfDKafOOBUTjbZ7tnE/PgRoOkG3WPvrRsXhXuTPG7ColIk7lhDyCxOxt/iXA1c6GFMw/K+Hm4b/gTX2BvkXPCntJQ9HMxCiZ0ZW5MA9Qw== Received: from DM5PR07CA0128.namprd07.prod.outlook.com (2603:10b6:3:13e::18) by MW2PR12MB2572.namprd12.prod.outlook.com (2603:10b6:907:6::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.30; Fri, 11 Jun 2021 23:21:18 +0000 Received: from DM6NAM11FT056.eop-nam11.prod.protection.outlook.com (2603:10b6:3:13e:cafe::aa) by DM5PR07CA0128.outlook.office365.com (2603:10b6:3:13e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Fri, 11 Jun 2021 23:21:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; oktetlabs.ru; dkim=none (message not signed) header.d=none;oktetlabs.ru; 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 DM6NAM11FT056.mail.protection.outlook.com (10.13.173.99) 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:21:17 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 11 Jun 2021 23:21:15 +0000 From: Xueming Li To: Andy Moreton CC: Luca Boccassi , Ivan Malov , Andrew Rybchenko , dpdk stable Date: Sat, 12 Jun 2021 07:04:29 +0800 Message-ID: <20210611230433.8208-175-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.6] 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: caa0824f-661f-4cfd-914c-08d92d2f9d45 X-MS-TrafficTypeDiagnostic: MW2PR12MB2572: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3rd17XN6sPjU75xpK300xmzXSd1TLqRFXWuFnUVgxUXKA2xUypFyUF2YM9NpS9TJVWW/jt0H1gQeJ8bKCt4UKOs55RSecQRMCN1QdTmgHqM+Qe9I3yoRGG1uPXzYvbPD95bjgCq1EC1ePAAG6Sun90PGl8RgqekwTKDLOjJxW3TQNBS096UhGDGzCvLYiPSSGGm3w3jvD1XKX3MPF1O85shwo76kgWON8bakISYTX5THYDxWx6bxgl2qgfh6SIpmhWQkufbXMBxFF+5BMfg3MUyStmsOQDRv9azwCZecDAvdhNKtEOAhfsbHALAnHRasNzwxqbdk1VFr1/2Edoz78x2GvjPGhB7VmkQmi5OvbX3MStuhoOFDLeDkWQ5uipJqcZeXukwD4HtGIgA/mMHy/rj6MzbwGr5/ZvY29gwT2DaJgwf/+XS6Zdjn9jVoGlF1n9iHGcm/NBeKxWvAMbQuOLS8kQqamrXTGhINCs7j8fVof+lzHs3eipSohNME5T+YySvNxT4S76+6CJSZEFvfFTLJQMDed0MB6JQngT84h5ppeITTd0VCOf4yIi9VKD+8ByS5OM8/IeBjd93cDXI/AHxyJxLz/w1GKTFOVivViuaVkt8kGA7htyJjtCoIDM+tBlONvswvk/g5K27Q1vKSkaWpIlcw55pwVdeNvkfPu6Ec6ZJvPlF1bjn/hQPGWYTiAfnrSbgR98+svUS4jcXsM4T8ldcoCoxMX9U4a0nMwaBGxcC2xev4gY7RQm4erW30/QwZVJh5fwWOChwGQLkiQBbFj7xvwg88h8RFnPdQURqcEuSHq4qVJYf9NaY7lg7a 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)(376002)(136003)(396003)(39860400002)(346002)(46966006)(36840700001)(36860700001)(6666004)(86362001)(478600001)(82310400003)(70206006)(70586007)(6286002)(36756003)(8936002)(966005)(47076005)(336012)(54906003)(16526019)(53546011)(1076003)(4326008)(316002)(7696005)(55016002)(26005)(186003)(82740400003)(36906005)(6916009)(83380400001)(426003)(7636003)(5660300002)(8676002)(356005)(2616005)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2021 23:21:17.3481 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: caa0824f-661f-4cfd-914c-08d92d2f9d45 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: DM6NAM11FT056.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2572 Subject: [dpdk-stable] patch 'common/sfc_efx/base: add missing MCDI response length checks' 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/b1ec8ac5ec339de563244d06d6b119cb2dabb367 Thanks. Xueming Li --- >From b1ec8ac5ec339de563244d06d6b119cb2dabb367 Mon Sep 17 00:00:00 2001 From: Andy Moreton Date: Tue, 18 May 2021 18:10:12 +0300 Subject: [PATCH] common/sfc_efx/base: add missing MCDI response length checks Cc: Luca Boccassi [ upstream commit e27950a02b035a6d366ed362c6719b6c892dda6b ] Fixes: 6f619653b9b1 ("net/sfc/base: import MCDI implementation") Fixes: e7cd430c864f ("net/sfc/base: import SFN7xxx family support") Fixes: 94190e3543bf ("net/sfc/base: import SFN8xxx family support") Fixes: 34285fd0891d ("common/sfc_efx/base: add match spec validate API") Fixes: e61baa82e64b ("common/sfc_efx/base: add MAE action set provisioning APIs") Fixes: b4fac34715f2 ("common/sfc_efx/base: add MAE action rule provisioning APIs") Fixes: ed15d7f8e064 ("common/sfc_efx/base: validate and compare outer match specs") Fixes: 7a673e1a4a05 ("common/sfc_efx/base: support outer rule provisioning") Signed-off-by: Andy Moreton Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- drivers/common/sfc_efx/base/ef10_filter.c | 11 ++++- drivers/common/sfc_efx/base/ef10_nic.c | 10 ++++- drivers/common/sfc_efx/base/efx_mae.c | 52 +++++++++++++++++++---- drivers/common/sfc_efx/base/efx_mcdi.c | 7 +++ 4 files changed, 69 insertions(+), 11 deletions(-) diff --git a/drivers/common/sfc_efx/base/ef10_filter.c b/drivers/common/sfc_efx/base/ef10_filter.c index 0e5f04fe3b..5158e07cc9 100644 --- a/drivers/common/sfc_efx/base/ef10_filter.c +++ b/drivers/common/sfc_efx/base/ef10_filter.c @@ -1225,20 +1225,25 @@ efx_mcdi_get_parser_disp_info( goto fail1; } + if (req.emr_out_length_used < MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMIN) { + rc = EMSGSIZE; + goto fail2; + } + matches_count = MCDI_OUT_DWORD(req, GET_PARSER_DISP_INFO_OUT_NUM_SUPPORTED_MATCHES); if (req.emr_out_length_used < MC_CMD_GET_PARSER_DISP_INFO_OUT_LEN(matches_count)) { rc = EMSGSIZE; - goto fail2; + goto fail3; } *list_lengthp = matches_count; if (buffer_length < matches_count) { rc = ENOSPC; - goto fail3; + goto fail4; } /* @@ -1258,6 +1263,8 @@ efx_mcdi_get_parser_disp_info( return (0); +fail4: + EFSYS_PROBE(fail4); fail3: EFSYS_PROBE(fail3); fail2: diff --git a/drivers/common/sfc_efx/base/ef10_nic.c b/drivers/common/sfc_efx/base/ef10_nic.c index 9dccde9576..ccce7b7437 100644 --- a/drivers/common/sfc_efx/base/ef10_nic.c +++ b/drivers/common/sfc_efx/base/ef10_nic.c @@ -491,11 +491,17 @@ efx_mcdi_get_rxdp_config( req.emr_out_length = MC_CMD_GET_RXDP_CONFIG_OUT_LEN; efx_mcdi_execute(enp, &req); + if (req.emr_rc != 0) { rc = req.emr_rc; goto fail1; } + if (req.emr_out_length_used < MC_CMD_GET_RXDP_CONFIG_OUT_LEN) { + rc = EMSGSIZE; + goto fail2; + } + if (MCDI_OUT_DWORD_FIELD(req, GET_RXDP_CONFIG_OUT_DATA, GET_RXDP_CONFIG_OUT_PAD_HOST_DMA) == 0) { /* RX DMA end padding is disabled */ @@ -514,7 +520,7 @@ efx_mcdi_get_rxdp_config( break; default: rc = ENOTSUP; - goto fail2; + goto fail3; } } @@ -522,6 +528,8 @@ efx_mcdi_get_rxdp_config( return (0); +fail3: + EFSYS_PROBE(fail3); fail2: EFSYS_PROBE(fail2); fail1: diff --git a/drivers/common/sfc_efx/base/efx_mae.c b/drivers/common/sfc_efx/base/efx_mae.c index 56b9fadf86..4bed2d4ab7 100644 --- a/drivers/common/sfc_efx/base/efx_mae.c +++ b/drivers/common/sfc_efx/base/efx_mae.c @@ -110,17 +110,22 @@ efx_mae_get_outer_rule_caps( goto fail2; } + if (req.emr_out_length_used < MC_CMD_MAE_GET_OR_CAPS_OUT_LENMIN) { + rc = EMSGSIZE; + goto fail3; + } + mcdi_field_ncaps = MCDI_OUT_DWORD(req, MAE_GET_OR_CAPS_OUT_COUNT); if (req.emr_out_length_used < MC_CMD_MAE_GET_OR_CAPS_OUT_LEN(mcdi_field_ncaps)) { rc = EMSGSIZE; - goto fail3; + goto fail4; } if (mcdi_field_ncaps > field_ncaps) { rc = EMSGSIZE; - goto fail4; + goto fail5; } for (i = 0; i < mcdi_field_ncaps; ++i) { @@ -148,6 +153,8 @@ efx_mae_get_outer_rule_caps( return (0); +fail5: + EFSYS_PROBE(fail5); fail4: EFSYS_PROBE(fail4); fail3: @@ -192,17 +199,22 @@ efx_mae_get_action_rule_caps( goto fail2; } - mcdi_field_ncaps = MCDI_OUT_DWORD(req, MAE_GET_OR_CAPS_OUT_COUNT); + if (req.emr_out_length_used < MC_CMD_MAE_GET_AR_CAPS_OUT_LENMIN) { + rc = EMSGSIZE; + goto fail3; + } + + mcdi_field_ncaps = MCDI_OUT_DWORD(req, MAE_GET_AR_CAPS_OUT_COUNT); if (req.emr_out_length_used < MC_CMD_MAE_GET_AR_CAPS_OUT_LEN(mcdi_field_ncaps)) { rc = EMSGSIZE; - goto fail3; + goto fail4; } if (mcdi_field_ncaps > field_ncaps) { rc = EMSGSIZE; - goto fail4; + goto fail5; } for (i = 0; i < mcdi_field_ncaps; ++i) { @@ -230,6 +242,8 @@ efx_mae_get_action_rule_caps( return (0); +fail5: + EFSYS_PROBE(fail5); fail4: EFSYS_PROBE(fail4); fail3: @@ -1650,15 +1664,22 @@ efx_mae_outer_rule_remove( goto fail2; } + if (req.emr_out_length_used < MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_LENMIN) { + rc = EMSGSIZE; + goto fail3; + } + if (MCDI_OUT_DWORD(req, MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID) != or_idp->id) { /* Firmware failed to remove the outer rule. */ rc = EAGAIN; - goto fail3; + goto fail4; } return (0); +fail4: + EFSYS_PROBE(fail4); fail3: EFSYS_PROBE(fail3); fail2: @@ -1854,15 +1875,22 @@ efx_mae_action_set_free( goto fail2; } + if (req.emr_out_length_used < MC_CMD_MAE_ACTION_SET_FREE_OUT_LENMIN) { + rc = EMSGSIZE; + goto fail3; + } + if (MCDI_OUT_DWORD(req, MAE_ACTION_SET_FREE_OUT_FREED_AS_ID) != aset_idp->id) { /* Firmware failed to free the action set. */ rc = EAGAIN; - goto fail3; + goto fail4; } return (0); +fail4: + EFSYS_PROBE(fail4); fail3: EFSYS_PROBE(fail3); fail2: @@ -2004,15 +2032,23 @@ efx_mae_action_rule_remove( goto fail2; } + if (req.emr_out_length_used < + MC_CMD_MAE_ACTION_RULE_DELETE_OUT_LENMIN) { + rc = EMSGSIZE; + goto fail3; + } + if (MCDI_OUT_DWORD(req, MAE_ACTION_RULE_DELETE_OUT_DELETED_AR_ID) != ar_idp->id) { /* Firmware failed to delete the action rule. */ rc = EAGAIN; - goto fail3; + goto fail4; } return (0); +fail4: + EFSYS_PROBE(fail4); fail3: EFSYS_PROBE(fail3); fail2: diff --git a/drivers/common/sfc_efx/base/efx_mcdi.c b/drivers/common/sfc_efx/base/efx_mcdi.c index 584f86e13a..59e884dcc6 100644 --- a/drivers/common/sfc_efx/base/efx_mcdi.c +++ b/drivers/common/sfc_efx/base/efx_mcdi.c @@ -2294,6 +2294,11 @@ efx_mcdi_get_workarounds( goto fail1; } + if (req.emr_out_length_used < MC_CMD_GET_WORKAROUNDS_OUT_LEN) { + rc = EMSGSIZE; + goto fail2; + } + if (implementedp != NULL) { *implementedp = MCDI_OUT_DWORD(req, GET_WORKAROUNDS_OUT_IMPLEMENTED); @@ -2305,6 +2310,8 @@ efx_mcdi_get_workarounds( return (0); +fail2: + EFSYS_PROBE(fail2); fail1: EFSYS_PROBE1(fail1, efx_rc_t, rc); -- 2.25.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-06-12 06:54:00.968325100 +0800 +++ 0175-common-sfc_efx-base-add-missing-MCDI-response-length.patch 2021-06-12 06:53:56.700000000 +0800 @@ -1 +1 @@ -From e27950a02b035a6d366ed362c6719b6c892dda6b Mon Sep 17 00:00:00 2001 +From b1ec8ac5ec339de563244d06d6b119cb2dabb367 Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Luca Boccassi + +[ upstream commit e27950a02b035a6d366ed362c6719b6c892dda6b ] @@ -14 +16,0 @@ -Cc: stable@dpdk.org @@ -27 +29 @@ -index 0c99d4b74b..ac6006c9b4 100644 +index 0e5f04fe3b..5158e07cc9 100644 @@ -68 +70 @@ -index 531365e420..eda0ad3068 100644 +index 9dccde9576..ccce7b7437 100644 @@ -108 +110 @@ -index 80fe155d0d..c1784211e7 100644 +index 56b9fadf86..4bed2d4ab7 100644 @@ -111 +113 @@ -@@ -109,17 +109,22 @@ efx_mae_get_outer_rule_caps( +@@ -110,17 +110,22 @@ efx_mae_get_outer_rule_caps( @@ -136 +138 @@ -@@ -147,6 +152,8 @@ efx_mae_get_outer_rule_caps( +@@ -148,6 +153,8 @@ efx_mae_get_outer_rule_caps( @@ -145 +147 @@ -@@ -191,17 +198,22 @@ efx_mae_get_action_rule_caps( +@@ -192,17 +199,22 @@ efx_mae_get_action_rule_caps( @@ -171 +173 @@ -@@ -229,6 +241,8 @@ efx_mae_get_action_rule_caps( +@@ -230,6 +242,8 @@ efx_mae_get_action_rule_caps( @@ -180 +182 @@ -@@ -1773,15 +1787,22 @@ efx_mae_outer_rule_remove( +@@ -1650,15 +1664,22 @@ efx_mae_outer_rule_remove( @@ -204 +206 @@ -@@ -2176,15 +2197,22 @@ efx_mae_action_set_free( +@@ -1854,15 +1875,22 @@ efx_mae_action_set_free( @@ -228 +230 @@ -@@ -2326,15 +2354,23 @@ efx_mae_action_rule_remove( +@@ -2004,15 +2032,23 @@ efx_mae_action_rule_remove( @@ -254 +256 @@ -index f4e1384d09..f226ffd923 100644 +index 584f86e13a..59e884dcc6 100644