[PATCH 00/16] Fix allocation issues and add hardening
Stephen Hemminger
stephen at networkplumber.org
Fri Sep 27 22:45:36 CEST 2024
Recent versions of GCC have some additional function attributes that 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
The same attributes could be added to lots more functions in DPDK,
but this patch set 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.
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
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
mempool: annotate mempool create
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/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 ++++++++++++++---------
lib/mempool/rte_mempool.h | 41 ++++++++-------
17 files changed, 130 insertions(+), 80 deletions(-)
--
2.45.2
More information about the dev
mailing list