From patchwork Fri Aug 11 08:58:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nithin Dabilpuram X-Patchwork-Id: 130139 X-Patchwork-Delegate: jerinj@marvell.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 66E7B43032; Fri, 11 Aug 2023 11:00:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 812A24329E; Fri, 11 Aug 2023 10:59:39 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id C1F1E43247 for ; Fri, 11 Aug 2023 10:59:36 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 37AMjx5j001610 for ; Fri, 11 Aug 2023 01:59:36 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=aUsexLW9prYlPTFSoQi+MpR/ebE4AZJounnNyPbSNOY=; b=UjBZD/IkEARBmCAE2y4pLuf1qR915Wt7LOZC49sjOS6vwNR8Lj1U1Wtosfj7xZHTMEz1 nFT9VHA6q3hWIbwx2A4ppzshw5ZHFGqPkUNA2XdFbDq24th85sMPq+xtUXc20oS1yDiU ZdTW+WKQl7U8c5GsJJeuExqxIw1anEkl/lcfiCB1Dsl4nGYcfvd74u7tLsl0sdqlzYp3 X7B92Hux0Y8D7+um6Vi9WOrGqkLZ+/xP18VxBPUl6vBe9etOk1MmIhYMa1CBPNvjzcM+ Db5l5y+bVwfJvGo9N0KFBwcBvbuiXzjLTq6Hgxcoj65+HmjlHbX+m2yVaLcxNc4wjynx Wg== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3sd8yp9rbj-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Fri, 11 Aug 2023 01:59:35 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Fri, 11 Aug 2023 01:59:31 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.48 via Frontend Transport; Fri, 11 Aug 2023 01:59:31 -0700 Received: from hyd1588t430.caveonetworks.com (unknown [10.29.52.204]) by maili.marvell.com (Postfix) with ESMTP id BEF6F3F706A; Fri, 11 Aug 2023 01:59:28 -0700 (PDT) From: Nithin Dabilpuram To: Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao CC: , , Akhil Goyal Subject: [PATCH 27/31] net/cnxk: fix usage of mbuf rearm data Date: Fri, 11 Aug 2023 14:28:01 +0530 Message-ID: <20230811085805.441256-27-ndabilpuram@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230811085805.441256-1-ndabilpuram@marvell.com> References: <20230811085805.441256-1-ndabilpuram@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 6OeycW9aU6TASo3QP3v9GYz4MKIWyRWz X-Proofpoint-GUID: 6OeycW9aU6TASo3QP3v9GYz4MKIWyRWz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-08-10_20,2023-08-10_01,2023-05-22_02 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 From: Akhil Goyal mbuf->rearm_data is a zero length array and it is being used to set data from that location. This shows an error in static code analysis. Hence it is typecast to a pointer which can be used to set values accordingly. Fixes: c062f5726f61 ("net/cnxk: support IP reassembly") Signed-off-by: Akhil Goyal --- drivers/net/cnxk/cn10k_rx.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/net/cnxk/cn10k_rx.h b/drivers/net/cnxk/cn10k_rx.h index 55ccf2023c..982fd26045 100644 --- a/drivers/net/cnxk/cn10k_rx.h +++ b/drivers/net/cnxk/cn10k_rx.h @@ -510,6 +510,7 @@ nix_sec_meta_to_mbuf(uint64_t cq_w1, uint64_t cq_w5, uintptr_t inb_sa, (const struct cpt_parse_hdr_s *)cpth; uint64_t mbuf_init = vgetq_lane_u64(*rearm, 0); struct cn10k_inb_priv_data *inb_priv; + uintptr_t p; /* Clear checksum flags */ *ol_flags &= ~(RTE_MBUF_F_RX_L4_CKSUM_MASK | @@ -530,7 +531,8 @@ nix_sec_meta_to_mbuf(uint64_t cq_w1, uint64_t cq_w5, uintptr_t inb_sa, /* First frag len */ inner->pkt_len = vgetq_lane_u16(*rx_desc_field1, 2); inner->data_len = vgetq_lane_u16(*rx_desc_field1, 4); - *(uint64_t *)(&inner->rearm_data) = mbuf_init; + p = (uintptr_t)&inner->rearm_data; + *(uint64_t *)p = mbuf_init; /* Reassembly success */ nix_sec_reassemble_frags(hdr, inner, cq_w1, cq_w5, mbuf_init); @@ -545,7 +547,7 @@ nix_sec_meta_to_mbuf(uint64_t cq_w1, uint64_t cq_w5, uintptr_t inb_sa, *rx_desc_field1, 4); /* Data offset might be updated */ - mbuf_init = *(uint64_t *)(&inner->rearm_data); + mbuf_init = *(uint64_t *)p; *rearm = vsetq_lane_u64(mbuf_init, *rearm, 0); } else { /* Reassembly failure */ @@ -628,6 +630,7 @@ nix_cqe_xtract_mseg(const union nix_rx_parse_u *rx, struct rte_mbuf *mbuf, uint64_t cq_w1; int64_t len; uint64_t sg; + uintptr_t p; cq_w1 = *(const uint64_t *)rx; if (flags & NIX_RX_REAS_F) @@ -703,7 +706,8 @@ nix_cqe_xtract_mseg(const union nix_rx_parse_u *rx, struct rte_mbuf *mbuf, mbuf->data_len = sg_len; sg = sg >> 16; - *(uint64_t *)(&mbuf->rearm_data) = rearm & ~0xFFFF; + p = (uintptr_t)&mbuf->rearm_data; + *(uint64_t *)p = rearm & ~0xFFFF; nb_segs--; iova_list++; @@ -753,7 +757,8 @@ nix_cqe_xtract_mseg(const union nix_rx_parse_u *rx, struct rte_mbuf *mbuf, head->nb_segs = nb_segs; } mbuf = next_frag; - *(uint64_t *)(&mbuf->rearm_data) = rearm + ldptr; + p = (uintptr_t)&mbuf->rearm_data; + *(uint64_t *)p = rearm + ldptr; mbuf->data_len = (sg & 0xFFFF) - ldptr - (flags & NIX_RX_OFFLOAD_TSTAMP_F ? CNXK_NIX_TIMESYNC_RX_OFFSET : 0); @@ -781,6 +786,7 @@ cn10k_nix_cqe_to_mbuf(const struct nix_cqe_hdr_s *cq, const uint32_t tag, const uint64_t w1 = *(const uint64_t *)rx; uint16_t len = rx->pkt_lenm1 + 1; uint64_t ol_flags = 0; + uintptr_t p; if (flag & NIX_RX_OFFLOAD_PTYPE_F) mbuf->packet_type = nix_ptype_get(lookup_mem, w1); @@ -818,7 +824,8 @@ cn10k_nix_cqe_to_mbuf(const struct nix_cqe_hdr_s *cq, const uint32_t tag, mbuf->ol_flags = ol_flags; mbuf->pkt_len = len; mbuf->data_len = len; - *(uint64_t *)(&mbuf->rearm_data) = val; + p = (uintptr_t)&mbuf->rearm_data; + *(uint64_t *)p = val; } if (flag & NIX_RX_MULTI_SEG_F)