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 C9F0E45A5D; Sun, 29 Sep 2024 17:41:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5817C40273; Sun, 29 Sep 2024 17:41:21 +0200 (CEST) Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by mails.dpdk.org (Postfix) with ESMTP id 78E09400D5 for ; Sun, 29 Sep 2024 17:41:19 +0200 (CEST) Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-719ba0654f9so3027518b3a.3 for ; Sun, 29 Sep 2024 08:41:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1727624478; x=1728229278; 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=F94pgahfBU98YzGKZ8/XEoF9FJeK1cybKb1IxtmDWmk=; b=i+/aEyI8VrWtjoqFvSwhvIDNKMQXx62LR5doUWwC9Ldcf6X0f58VjSr0ZrwdG8cLg1 ohOWxiVcIJyhSxjEhMwpSrA4lvhh9Eo4CP88p0Xj3iSwTT3SC6afhJf9t39DmpLCH0Xu SyPakCcKowii1yqBCgIdIMU+5KDXl9d+3tx/IN+5k4HduseGhQyOYyJBDvR33a5fOT5B rdLHTZkpBziZ5OZwjcvCpCU1fn0c4qHb7jKu/io7q3bKYWqSXGTfLXFewkTf1myHIPyr BbfCUDaOVZ46f8laU774ZW/IiiaXxjpX09evb/90FgcBGkfpfPkpsqPPSN75VX/0iUja /buQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727624478; x=1728229278; 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=F94pgahfBU98YzGKZ8/XEoF9FJeK1cybKb1IxtmDWmk=; b=rbPyh9Oga8ZDJv5pfT6Oe+n3unXhUBusOpQfdsSJbJ0Wu1/fVzh6hfu3GPCSrg3UpV jQMzFKn/BKFYCEYbNUeK5cwp0+/jCm9DTE7alUHzWZHF89HXXFG6UdzpqNeFGklXHqq9 fYpP/yvDFSTUtG90dhIKTDuPhpAqgYGHr5DBw926jwc1KzCV89CaIKvTwHLTBSZUClGf 9j+qIzMiRpt8IOK09LOnaZKArppCydhcjrFhgbBofyFHTuH0uXXlSiPEnxyURk1ZOiH5 KvQTeDrT2YfKTvTuF1sV3GxzJ4IgZ/4PZEXwSgyLzoW+vb1gLSXlsfFIcvLbSB9+EA/y NKRw== X-Gm-Message-State: AOJu0YwnBYmadmnpNI96cThXz47TxvpkAw8LvjY8XlgiP/xn8rZ2fUQb Qk5p87rfcDxRf9+ECdexstqwy3QINKswNX1HfGDObr3gWGBwHm/TOr+95KQGb7xmgdZwv+CgrwO mum8= X-Google-Smtp-Source: AGHT+IEwLZ/dl9+6NDmhFWOKQZKu5gXU82lfuzNbo3bIXjbrOFZwhvi7U2J+lda62Ez7375ckR38Dw== X-Received: by 2002:a05:6a21:3a96:b0:1d3:4675:fc06 with SMTP id adf61e73a8af0-1d4fa6212c8mr14099276637.10.1727624478334; Sun, 29 Sep 2024 08:41:18 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71b2649c775sm4707416b3a.29.2024.09.29.08.41.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Sep 2024 08:41:17 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v3 00/18] Fix allocation bugs and add malloc hardening Date: Sun, 29 Sep 2024 08:34:25 -0700 Message-ID: <20240929154107.62539-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 additonal 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 patchset focuses on the key ones, and where problems exist in current code base. v3 - fix more broken devices - reorder patches Stephen Hemminger (18): 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 baseband/la12xx: prevent use after free common/ipdf: fix use after free due eal: add function attributes for allocation functions eal: add alloc_function attribute to rte_malloc 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 | 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 ++++++++++++++--------- 21 files changed, 126 insertions(+), 66 deletions(-) -- 2.45.2