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 9263243DF6; Thu, 4 Apr 2024 09:50:48 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7E342402D8; Thu, 4 Apr 2024 09:50:48 +0200 (CEST) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 7598F4025D for ; Thu, 4 Apr 2024 09:50:47 +0200 (CEST) Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4V9DKM50vHz67NRr; Thu, 4 Apr 2024 15:49:27 +0800 (CST) Received: from frapeml100007.china.huawei.com (unknown [7.182.85.133]) by mail.maildlp.com (Postfix) with ESMTPS id 8D0B4140A87; Thu, 4 Apr 2024 15:50:46 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100007.china.huawei.com (7.182.85.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 4 Apr 2024 09:50:46 +0200 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.035; Thu, 4 Apr 2024 09:50:46 +0200 From: Konstantin Ananyev To: Stephen Hemminger , "dev@dpdk.org" Subject: RE: [PATCH v3 00/30] replace rte_memcpy of fixed size with memcpy Thread-Topic: [PATCH v3 00/30] replace rte_memcpy of fixed size with memcpy Thread-Index: AQHahUiVKN4QZMG8PEGvR+wzglCyV7FXvu6Q Date: Thu, 4 Apr 2024 07:50:46 +0000 Message-ID: <21875455d63a47198e68e91f5b790609@huawei.com> References: <20240229225936.483472-1-stephen@networkplumber.org> <20240402215502.278838-1-stephen@networkplumber.org> In-Reply-To: <20240402215502.278838-1-stephen@networkplumber.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.158.230] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 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 DPDK has a lot of unnecessary usage of rte_memcpy. > This patch set replaces cases where rte_memcpy is used with a fixed > size constant size. >=20 > Typical example is: > rte_memcpy(mac_addrs, mac.addr_bytes, RTE_ETHER_ADDR_LEN); > which can be replaced with: > memcpy(mac_addrs, mac.addr_bytes, RTE_ETHER_ADDR_LEN); >=20 > This does not change the resulting binary on almost all architectures > because x86 version of intrisics and glibc are the same, and > other architectures were using __builtin_constant_p(). >=20 > The main benefit is that analysis tools like fortify, Coverity, and ASAN > analyzers can check these memcpy's. >=20 > The first patch is a simple coccinelle script to do the replacement > and the rest are the results broken out by module. The script can be used > again to make sure more bad usage doesn't creep in with new drivers. >=20 > v3 - rebase and rerun coccinelle script on 24.03 > - consolidate patches by subtree > - remove inclusion of rte_memcpy.h when no longer used. >=20 > Stephen Hemminger (30): > cocci/rte_memcpy: add script to eliminate fixed size rte_memcpy > eal: replace use of fixed size rte_memcpy > ethdev: replace use of fixed size rte_memcpy > eventdev: replace use of fixed size rte_memcpy > cryptodev: replace use of fixed size rte_memcpy > ip_frag: replace use of fixed size rte_memcpy > net: replace use of fixed size rte_memcpy > lpm: replace use of fixed size rte_memcpy > node: replace use of fixed size rte_memcpy > pdcp: replace use of fixed size rte_memcpy > pipeline: replace use of fixed size rte_memcpy > rib: replace use of fixed size rte_memcpy > security: replace use of fixed size rte_memcpy > bus: remove unneeded rte_memcpy.h include > net: replace use of fixed size rte_memcpy > raw: replace use of fixed size rte_memcpy > baseband: replace use of fixed size rte_memcpy > common: replace use of fixed size rte_memcpy > crypto: replace use of fixed size rte_memcpy > crypto: replace use of fixed size rte_memcpy > event: replace use of fixed size rte_memcpy > mempool: replace use of fixed size rte_memcpy > ml/cnxk: replace use of fixed size rte_memcpy > app/test-pmd: replace use of fixed size rte_memcpy > app/graph: replace use of fixed size rte_memcpy > app/test-eventdev: replace use of fixed size rte_memcpy > app/test: replace use of fixed size rte_memcpy > app/test-pipeline: remove unused rte_memcpy.h include > app/test-bbdev: remove unnecessary include of rte_memcpy.h > examples: replace use of fixed size rte_memcpy >=20 > app/graph/neigh.c | 8 +- > app/test-bbdev/test_bbdev.c | 1 - > app/test-eventdev/test_pipeline_common.c | 19 ++- > app/test-pipeline/config.c | 1 - > app/test-pipeline/init.c | 1 - > app/test-pipeline/main.c | 1 - > app/test-pipeline/runtime.c | 1 - > app/test-pmd/cmdline.c | 48 ++++---- > app/test-pmd/cmdline_flow.c | 24 ++-- > app/test-pmd/config.c | 8 +- > app/test-pmd/csumonly.c | 1 - > app/test-pmd/flowgen.c | 1 - > app/test-pmd/iofwd.c | 1 - > app/test-pmd/macfwd.c | 1 - > app/test-pmd/macswap.c | 1 - > app/test-pmd/noisy_vnf.c | 1 - > app/test-pmd/rxonly.c | 1 - > app/test-pmd/testpmd.c | 1 - > app/test/commands.c | 1 - > app/test/packet_burst_generator.c | 4 +- > app/test/test_crc.c | 5 +- > app/test/test_cryptodev.c | 18 ++- > app/test/test_cryptodev_asym.c | 1 - > app/test/test_cryptodev_security_pdcp.c | 1 - > app/test/test_efd.c | 1 - > app/test/test_efd_perf.c | 1 - > app/test/test_event_crypto_adapter.c | 12 +- > app/test/test_event_dma_adapter.c | 4 +- > app/test/test_eventdev.c | 1 - > app/test/test_ipsec.c | 6 +- > app/test/test_link_bonding_mode4.c | 8 +- > app/test/test_mbuf.c | 1 - > app/test/test_member.c | 1 - > app/test/test_member_perf.c | 1 - > app/test/test_rawdev.c | 1 - > app/test/test_security_inline_proto.c | 36 +++--- > app/test/test_service_cores.c | 1 - > app/test/virtual_pmd.c | 3 +- > devtools/cocci/rte_memcpy.cocci | 11 ++ > drivers/baseband/acc/rte_acc100_pmd.c | 17 ++- > drivers/baseband/acc/rte_vrb_pmd.c | 21 ++-- > drivers/baseband/la12xx/bbdev_la12xx.c | 4 +- > drivers/bus/auxiliary/linux/auxiliary.c | 1 - > drivers/bus/fslmc/fslmc_bus.c | 1 - > drivers/bus/fslmc/fslmc_vfio.c | 1 - > drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c | 1 - > drivers/bus/fslmc/portal/dpaa2_hw_dpci.c | 1 - > drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 1 - > drivers/bus/pci/linux/pci.c | 1 - > drivers/common/idpf/idpf_common_device.c | 4 +- > drivers/common/idpf/idpf_common_virtchnl.c | 10 +- > drivers/common/qat/qat_qp.c | 10 +- > drivers/compress/qat/qat_comp.c | 8 +- > drivers/crypto/ccp/ccp_crypto.c | 14 +-- > drivers/crypto/cnxk/cnxk_cryptodev_ops.c | 2 +- > drivers/crypto/cnxk/cnxk_se.h | 2 +- > drivers/crypto/dpaa_sec/dpaa_sec.c | 2 +- > drivers/crypto/ipsec_mb/pmd_snow3g.c | 4 +- > drivers/crypto/qat/qat_sym_session.c | 52 ++++----- > .../scheduler/rte_cryptodev_scheduler.c | 6 +- > drivers/crypto/scheduler/scheduler_failover.c | 12 +- > drivers/event/cnxk/cnxk_eventdev_selftest.c | 1 - > drivers/event/cnxk/cnxk_tim_evdev.c | 4 +- > drivers/event/dlb2/dlb2.c | 4 +- > drivers/event/dpaa/dpaa_eventdev.c | 1 - > drivers/event/dpaa2/dpaa2_eventdev.c | 7 +- > drivers/event/dpaa2/dpaa2_eventdev_selftest.c | 1 - > drivers/event/dpaa2/dpaa2_hw_dpcon.c | 1 - > drivers/event/octeontx/ssovf_evdev_selftest.c | 1 - > drivers/event/octeontx/timvf_evdev.c | 4 +- > drivers/mempool/dpaa/dpaa_mempool.c | 4 +- > drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 5 +- > drivers/ml/cnxk/cn10k_ml_model.c | 8 +- > drivers/ml/cnxk/cn10k_ml_ops.c | 11 +- > drivers/ml/cnxk/cnxk_ml_ops.c | 2 +- > drivers/ml/cnxk/mvtvm_ml_model.c | 8 +- > drivers/ml/cnxk/mvtvm_ml_ops.c | 8 +- > drivers/net/af_xdp/rte_eth_af_xdp.c | 2 +- > drivers/net/avp/avp_ethdev.c | 4 +- > drivers/net/axgbe/axgbe_ethdev.c | 4 +- > drivers/net/bnx2x/bnx2x.c | 32 +++-- > drivers/net/bnxt/bnxt_flow.c | 34 +++--- > drivers/net/bonding/rte_eth_bond_8023ad.c | 4 +- > drivers/net/bonding/rte_eth_bond_flow.c | 2 +- > drivers/net/cnxk/cnxk_eswitch_devargs.c | 3 +- > drivers/net/cnxk/cnxk_ethdev_ops.c | 2 +- > drivers/net/cnxk/cnxk_rep.c | 3 +- > drivers/net/cnxk/cnxk_rep_flow.c | 6 +- > drivers/net/cnxk/cnxk_rep_msg.c | 8 +- > drivers/net/cnxk/cnxk_rep_ops.c | 2 +- > drivers/net/cnxk/cnxk_tm.c | 5 +- > drivers/net/cpfl/cpfl_ethdev.c | 3 +- > drivers/net/cpfl/cpfl_vchnl.c | 4 +- > drivers/net/cxgbe/clip_tbl.c | 2 +- > drivers/net/cxgbe/cxgbe_filter.c | 8 +- > drivers/net/cxgbe/l2t.c | 4 +- > drivers/net/cxgbe/smt.c | 20 ++-- > drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 1 - > drivers/net/dpaa2/dpaa2_ethdev.c | 1 - > drivers/net/dpaa2/dpaa2_recycle.c | 1 - > drivers/net/dpaa2/dpaa2_rxtx.c | 1 - > drivers/net/dpaa2/dpaa2_sparser.c | 1 - > drivers/net/dpaa2/dpaa2_tm.c | 2 +- > drivers/net/e1000/em_rxtx.c | 1 - > drivers/net/e1000/igb_flow.c | 22 ++-- > drivers/net/e1000/igb_pf.c | 7 +- > drivers/net/e1000/igb_rxtx.c | 1 - > drivers/net/enic/enic_main.c | 8 +- > drivers/net/failsafe/failsafe_ops.c | 6 +- > drivers/net/gve/base/gve_adminq.c | 2 +- > drivers/net/hinic/hinic_pmd_ethdev.c | 1 - > drivers/net/hinic/hinic_pmd_flow.c | 40 +++---- > drivers/net/hns3/hns3_fdir.c | 2 +- > drivers/net/hns3/hns3_flow.c | 4 +- > drivers/net/i40e/i40e_ethdev.c | 109 ++++++++---------- > drivers/net/i40e/i40e_fdir.c | 28 +++-- > drivers/net/i40e/i40e_flow.c | 56 +++++---- > drivers/net/i40e/i40e_pf.c | 3 +- > drivers/net/i40e/i40e_tm.c | 11 +- > drivers/net/i40e/rte_pmd_i40e.c | 34 +++--- > drivers/net/iavf/iavf_fdir.c | 93 +++++++-------- > drivers/net/iavf/iavf_fsub.c | 50 ++++---- > drivers/net/iavf/iavf_generic_flow.c | 2 +- > drivers/net/iavf/iavf_tm.c | 11 +- > drivers/net/iavf/iavf_vchnl.c | 9 +- > drivers/net/ice/ice_dcf.c | 5 +- > drivers/net/ice/ice_dcf_parent.c | 2 +- > drivers/net/ice/ice_dcf_sched.c | 11 +- > drivers/net/ice/ice_diagnose.c | 4 +- > drivers/net/ice/ice_ethdev.c | 14 +-- > drivers/net/ice/ice_fdir_filter.c | 37 +++--- > drivers/net/ice/ice_generic_flow.c | 2 +- > drivers/net/ice/ice_hash.c | 2 +- > drivers/net/ice/ice_tm.c | 11 +- > drivers/net/idpf/idpf_ethdev.c | 7 +- > drivers/net/idpf/idpf_rxtx.c | 10 +- > drivers/net/ipn3ke/ipn3ke_flow.c | 32 +++-- > drivers/net/ipn3ke/ipn3ke_representor.c | 16 +-- > drivers/net/ipn3ke/ipn3ke_tm.c | 6 +- > drivers/net/ixgbe/ixgbe_ethdev.c | 9 +- > drivers/net/ixgbe/ixgbe_fdir.c | 7 +- > drivers/net/ixgbe/ixgbe_flow.c | 65 +++++------ > drivers/net/ixgbe/ixgbe_ipsec.c | 8 +- > drivers/net/ixgbe/ixgbe_pf.c | 5 +- > drivers/net/ixgbe/ixgbe_tm.c | 11 +- > drivers/net/ixgbe/rte_pmd_ixgbe.c | 4 +- > drivers/net/memif/memif_socket.c | 4 +- > drivers/net/mlx5/mlx5_devx.c | 4 +- > drivers/net/mlx5/mlx5_flow.c | 38 +++--- > drivers/net/mlx5/mlx5_flow_aso.c | 6 +- > drivers/net/mlx5/mlx5_flow_hw.c | 27 ++--- > drivers/net/mlx5/mlx5_rx.c | 6 +- > drivers/net/mlx5/mlx5_rxtx_vec.c | 8 +- > drivers/net/mvpp2/mrvl_tm.c | 2 +- > drivers/net/netvsc/hn_ethdev.c | 1 - > drivers/net/nfp/flower/nfp_conntrack.c | 2 +- > drivers/net/nfp/flower/nfp_flower_flow.c | 16 +-- > .../net/nfp/flower/nfp_flower_representor.c | 2 +- > drivers/net/nfp/nfp_mtr.c | 10 +- > drivers/net/ngbe/ngbe_pf.c | 4 +- > drivers/net/null/rte_eth_null.c | 6 +- > drivers/net/pcap/pcap_ethdev.c | 2 +- > drivers/net/pcap/pcap_osdep_freebsd.c | 3 +- > drivers/net/pcap/pcap_osdep_linux.c | 3 +- > drivers/net/qede/qede_main.c | 2 +- > drivers/net/ring/rte_eth_ring.c | 1 - > drivers/net/sfc/sfc.c | 2 +- > drivers/net/sfc/sfc_ef10_tx.c | 2 +- > drivers/net/sfc/sfc_ethdev.c | 11 +- > drivers/net/sfc/sfc_flow.c | 20 ++-- > drivers/net/sfc/sfc_flow_rss.c | 2 +- > drivers/net/sfc/sfc_mae.c | 2 +- > drivers/net/sfc/sfc_rx.c | 2 +- > drivers/net/sfc/sfc_tso.c | 2 +- > drivers/net/sfc/sfc_tso.h | 9 +- > drivers/net/tap/rte_eth_tap.c | 14 +-- > drivers/net/txgbe/txgbe_ethdev.c | 9 +- > drivers/net/txgbe/txgbe_fdir.c | 6 +- > drivers/net/txgbe/txgbe_flow.c | 65 +++++------ > drivers/net/txgbe/txgbe_ipsec.c | 8 +- > drivers/net/txgbe/txgbe_pf.c | 5 +- > drivers/net/txgbe/txgbe_tm.c | 11 +- > drivers/net/vhost/rte_eth_vhost.c | 1 - > drivers/net/virtio/virtio_ethdev.c | 1 - > drivers/raw/ifpga/afu_pmd_he_hssi.c | 3 +- > drivers/raw/ifpga/afu_pmd_he_lpbk.c | 3 +- > drivers/raw/ifpga/afu_pmd_he_mem.c | 3 +- > drivers/raw/ifpga/afu_pmd_n3000.c | 8 +- > drivers/raw/ifpga/ifpga_rawdev.c | 11 +- > drivers/raw/skeleton/skeleton_rawdev.c | 8 +- > drivers/raw/skeleton/skeleton_rawdev_test.c | 1 - > examples/bbdev_app/main.c | 2 +- > examples/bond/main.c | 1 - > examples/ip_fragmentation/main.c | 1 - > examples/ip_reassembly/main.c | 1 - > examples/ipv4_multicast/main.c | 1 - > examples/l2fwd-cat/cat.c | 4 +- > examples/l2fwd-jobstats/main.c | 1 - > examples/l2fwd-keepalive/main.c | 1 - > examples/l2fwd-macsec/main.c | 1 - > examples/l2fwd/main.c | 1 - > examples/l3fwd-power/main.c | 1 - > examples/l3fwd/main.c | 1 - > examples/link_status_interrupt/main.c | 1 - > .../client_server_mp/mp_server/init.c | 1 - > .../client_server_mp/mp_server/main.c | 1 - > examples/multi_process/symmetric_mp/main.c | 1 - > examples/ptpclient/ptpclient.c | 11 +- > examples/qos_sched/app_thread.c | 1 - > examples/qos_sched/main.c | 1 - > examples/server_node_efd/efd_server/init.c | 1 - > examples/server_node_efd/efd_server/main.c | 1 - > examples/vhost/main.c | 6 +- > examples/vmdq/main.c | 6 +- > examples/vmdq_dcb/main.c | 15 +-- > lib/cryptodev/rte_cryptodev.c | 2 +- > lib/eal/common/eal_common_options.c | 7 +- > lib/ethdev/rte_ethdev.c | 3 +- > lib/ethdev/rte_flow.c | 5 +- > lib/eventdev/rte_event_crypto_adapter.c | 2 +- > lib/eventdev/rte_event_dma_adapter.c | 4 +- > lib/eventdev/rte_event_timer_adapter.c | 2 +- > lib/fib/trie.c | 2 +- > lib/ip_frag/rte_ipv6_fragmentation.c | 4 +- > lib/ip_frag/rte_ipv6_reassembly.c | 6 +- > lib/lpm/rte_lpm6.c | 3 +- > lib/net/rte_ether.c | 2 +- > lib/node/ip6_lookup.c | 8 +- > lib/pdcp/pdcp_process.c | 36 +++--- > lib/pipeline/rte_table_action.c | 8 +- > lib/rib/rte_rib6.h | 5 +- > lib/security/rte_security.c | 4 +- > 232 files changed, 886 insertions(+), 1045 deletions(-) > create mode 100644 devtools/cocci/rte_memcpy.cocci >=20 > -- Series-Acked-by: Konstantin Ananyev =20 > 2.43.0