Recent versions of Gcc have some additonal function attributes tha can help with DPDK performance and stability.
The alloc_align attribute can tell the compiler what the alignment of the allocation will be, and the optimizer can use this to produce better code (especially memcpy and structure copies). The malloc attribute tells compiler that object is not overlapping and potentially aliasing. It also as an additional variant in Gcc 11 or later that allows for detecting all sorts of common errors like calling free() on memory allocated with rte_malloc(). This patch set is structured with: - add macros for enable the macros - fix any new warnings that were discovered - enable the attributes In order to use the malloc attribute the free function prototype needs to be moved before the allocator/create function prototype so that the malloc attribute can refer to it. The same attributes could be added to lots more functions in DPDK, but this patchset focuses on the key ones, and where problems exist in current code base. The fixes should be backported to stable (they are real bugs), but the macros common and the annotation in malloc should not. v2 - add release note - add fix for nfp device - drop mempool (will pick it up in later series) Stephen Hemminger (16): eal: add function attributes for allocation functions memzone: fix use after free in tracing cryptodev/bcmfs: fix mis-matched free dma/ixd: fix incorrect free function in cleanup event/cnxk: fix pointer mismatch in cleanup examples/vhost: fix free function mismatch net/cnxk: fix use-after-free bpf: fix free mismatch if convert fails net/e1000: fix use-after-free net/sfc: fix use-after-free warning messages net/cpfl: fix free of nonheap object net/nfp: fix duplicate call to rte_free raw/ifpga/base: fix use after free common/qat: fix use after free drivers/ifpga: fix free function mismatch eal: add alloc_function attribute to rte_malloc doc/guides/rel_notes/release_24_11.rst | 8 +++ drivers/common/qat/qat_device.c | 6 +-- drivers/crypto/bcmfs/bcmfs_device.c | 4 +- drivers/dma/idxd/idxd_pci.c | 2 +- drivers/event/cnxk/cnxk_eventdev.c | 4 +- drivers/net/cnxk/cnxk_ethdev_sec.c | 2 +- drivers/net/cpfl/cpfl_flow_parser.c | 1 - drivers/net/e1000/igb_ethdev.c | 4 +- drivers/net/nfp/flower/nfp_flower_flow.c | 1 - drivers/net/sfc/sfc_flow_rss.c | 4 +- drivers/net/sfc/sfc_mae.c | 23 ++++----- drivers/raw/ifpga/base/opae_intel_max10.c | 11 +++- drivers/raw/ifpga/ifpga_rawdev.c | 8 +-- examples/vhost_blk/vhost_blk.c | 2 +- lib/bpf/bpf_convert.c | 2 +- lib/eal/common/eal_common_memzone.c | 3 +- lib/eal/include/rte_common.h | 30 +++++++++++ lib/eal/include/rte_malloc.h | 63 ++++++++++++++--------- 18 files changed, 116 insertions(+), 62 deletions(-) -- 2.45.2