From d01201829b88fe823e0b99cd13a65e1711cd8973 Mon Sep 17 00:00:00 2001 From: Ferruh Yigit Date: Fri, 29 Oct 2021 11:37:01 +0100 Subject: [PATCH] net/i40e: fix 32-bit build MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Got error with: gcc 11.2.1 "cc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1)" Build error: In function ‘i40e_flow_parse_fdir_pattern’, inlined from ‘i40e_flow_parse_fdir_filter’ at ../drivers/net/i40e/i40e_flow.c:3274:8: ../drivers/net/i40e/i40e_flow.c:3052:69: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 3052 | filter->input.flow_ext.flexbytes[j] = | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 3053 | raw_spec->pattern[i]; | ~~~~~~~~~~~~~~~~~~~~ In file included from ../drivers/net/i40e/i40e_flow.c:25: ../drivers/net/i40e/i40e_flow.c: In function ‘i40e_flow_parse_fdir_filter’: ../drivers/net/i40e/i40e_ethdev.h:638:17: note: at offset 16 into destination object ‘flexbytes’ of size 16 638 | uint8_t flexbytes[RTE_ETH_FDIR_MAX_FLEXLEN]; | ^~~~~~~~~ Fixing by adding range checks. Fixes: 6ced3dd72f5f ("net/i40e: support flexible payload parsing for FDIR") Cc: stable@dpdk.org Signed-off-by: Ferruh Yigit Acked-by: Qi Zhang --- drivers/net/i40e/i40e_flow.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index 9acaa18751..c9676caab5 100644 --- a/drivers/net/i40e/i40e_flow.c +++ b/drivers/net/i40e/i40e_flow.c @@ -3049,6 +3049,9 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev, for (i = 0; i < raw_spec->length; i++) { j = i + next_dst_off; + if (j >= RTE_ETH_FDIR_MAX_FLEXLEN || + j >= I40E_FDIR_MAX_FLEX_LEN) + break; filter->input.flow_ext.flexbytes[j] = raw_spec->pattern[i]; filter->input.flow_ext.flex_mask[j] = -- 2.39.5