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 C627345AE3; Tue, 8 Oct 2024 18:48:55 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8287140665; Tue, 8 Oct 2024 18:48:55 +0200 (CEST) Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) by mails.dpdk.org (Postfix) with ESMTP id B2B2C4042F for ; Tue, 8 Oct 2024 18:48:53 +0200 (CEST) Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-7db90a28cf6so2638a12.0 for ; Tue, 08 Oct 2024 09:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1728406133; x=1729010933; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kEuSSpQFDXk/L9hOXhknTmg6wuiJZTT/4tS9G0AebPc=; b=wtE/3R/ACy4jZraO0QXjtEyif/8jRsDzt5wDyyt9ehTJgaAejB3nm8UN47+Pq9eGAP 3cNCCrbFRJYMIRrbKGzFS+B8SO7Qo5DjD+y+knZJ9mW4tmKoDOaGLZtwWp00Q4BBgRfU 1LltYU63UlsMkDnXZSm7iW8tK0mPP8T4cKLAtp8OJRvkv4gGcDAmuX+tzajk1qpeNJ5E Dwec64xpjWs4/wKKc7VxBfbdZrdtvAx4fbMthTnbIEQgnwe8H5r30f7l8Vu5cASbaY4C wZOhT0uNyu/Y+wb+mTQuS4dEJl6gUjCxdRLz22tHV/V8Pl0QosMkPCXls5+G9PJQtrmm ekcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728406133; x=1729010933; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kEuSSpQFDXk/L9hOXhknTmg6wuiJZTT/4tS9G0AebPc=; b=FKIbwVAXV2aM9R1RyjB6Bj1ZGk702q1Pe7LIwBWJcVYDgmTbw416B6tA6iA87ZGXHN nbn62doDZw85qBsjAskxHMLcZncuut8h5Pk5f7WxWm8pKNn371criEOUTl3kPuSRrAA5 VLz+jp/1sPIIWMWmvF3pfQJqVC/K5hBG/yVUQZ9Ab2ZjhRrHIgzmeq0PoR/UdmMM6i+T 1Ic1Ue1l45DNLaE3Y0E4N4xNp8AzyQ113X4BjUicapjUTaorcdYgA3gUMo3WH3uj90SQ WXyn7Nt+RBQEMzKhjL165M6DsLFUP3n4dCbmQnHhjRqD+mBiBUgU1PXNfoJCvtCCVDK2 ZhvA== X-Gm-Message-State: AOJu0YzmIIz1H88ZpU242xnOV5tpC1fPkW6inWmZeyWu3KoODDwvYAGK QoF9k/BDA4rPspit9uuyw52AcvKBe7JfvDe/DwCLFmyz/8nYgGKleBSd+jJLNVBr9sWSOgePHmY 9/ku2Dw== X-Google-Smtp-Source: AGHT+IGbm/MDPZsZAF4vIDUl11IjmzD/+zIe7BzBW7VkJXGpwZjUWTUS3PFeo3TYdfAp/+jE6PHg8A== X-Received: by 2002:a17:902:cf0d:b0:205:4d27:616e with SMTP id d9443c01a7336-20c5fb4c6f6mr11599235ad.22.1728406132795; Tue, 08 Oct 2024 09:48:52 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20c54056bd9sm13832965ad.85.2024.10.08.09.48.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Oct 2024 09:48:52 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v9 00/17] Use malloc function attribute to uncover bugs Date: Tue, 8 Oct 2024 09:47:04 -0700 Message-ID: <20241008164842.139045-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240927204742.546164-1-stephen@networkplumber.org> References: <20240927204742.546164-1-stephen@networkplumber.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Recent versions of GCC have some additional function attributes that can help with DPDK performance and stability. The alloc_align attribute tells 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(). 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. This uncovered at least 16 pre-existing bugs in DPDK, these should go to stable. This patch set is structured with: - fix any new warnings that were discovered - add macros for enable the macros - 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. v9 - correct the event/cnxk patch Stephen Hemminger (17): memzone: fix use after free in tracing cryptodev/bcmfs: fix mis-matched free dma/ixd: fix incorrect free function in cleanup event/cnxk: fix free of non-heap in cleanup code 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 baseband/la12xx: prevent use after free common/idpf: fix use after free due eal: add function attributes for allocation functions doc/guides/rel_notes/release_24_11.rst | 8 +++ drivers/baseband/la12xx/bbdev_la12xx.c | 1 + drivers/common/idpf/base/idpf_osdep.h | 10 +++- drivers/common/idpf/idpf_common_device.c | 3 +- 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 | 2 +- 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 | 34 +++++++++++++ lib/eal/include/rte_malloc.h | 59 ++++++++++++++--------- 21 files changed, 124 insertions(+), 66 deletions(-) -- 2.45.2